当前位置: 首页 > news >正文

MongoTemplate 操作 Mongo的字段中List元素

mongo中原始数据

{
	"_id": {
		"$numberLong": "7085200805669904384"
	},
	"message": "Thank you for your support",
	"announcement": "weekend",
	"created_user_id": {
		"$numberLong": "8637022162191"
	},
	"update_time": {
		"$date": "2022-12-15T06:24:00.193Z"
	},
	"status": "1",
	"subscribers": [
		{
			"boolean": false,
			"userId": {
				"$numberLong": "8637022162191"
			}
		}
	]
}

给subscribers 字段新增一条数据

    public static void main(String[] args) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(7085200805669904384L));
        Update update = new Update();
       
        Map<String, Object> sub = new HashMap<>();
        sub.put("userId", 8637022162191L);
        sub.put("boolean", false);
        update.push("subscribers", sub);
        mongoTemplate.updateFirst(query, update, "store_time_away");
    }

给subscribers 字段删除一条数据

    public static void main(String[] args) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(7085200805669904384L));
        Update update = new Update();
     
        Map<String, Object> sub = new HashMap<>();
        sub.put("userId", 8637022162191L);
        update.pull("subscribers", sub);
        mongoTemplate.updateFirst(query, update, "store_time_away");
    }

给subscribers 编辑一条数据

    public static void main(String[] args) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(7085200805669904384L))
                .addCriteria(Criteria.where("subscribers.userId").is(8637022162191L));
        Update update = new Update();
       //不预先查询文档我们就不知道要修改数组的元素的下标。这时定位操作符“$”
        update.set("subscribers.$.boolean",false);
        mongoTemplate.updateFirst(query, update, "store_time_away");
    }

查询

   public static void main(String[] args) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(7085200805669904384L))
                .addCriteria(Criteria.where("subscribers.userId").is(8637022162191L));

        StoreTimeAwayV1 storeTimeAways = mongoTemplate.findOne(query,  StoreTimeAwayV1.class);
    }

相关文章:

  • 杭州网站建设icp备/专业北京网站建设公司
  • 天津建设工程信息网官网入口/企业网站seo推广方案
  • 用canvas做网站/发新闻稿平台
  • 树莓派wordpress外网访问/百度url提交
  • 网站开发研究的方法与技术路线/百度客服工作内容
  • 广州网站建设哪家技术好/广告传媒公司
  • Maix Bit(K210)保姆级入门上手教程---外设基本使用
  • 实时即未来,大数据项目车联网之Flink Watermark(水位线)【十四】
  • 好看的滤镜怎么调?来看看今日的分享
  • AppScan介绍和安装
  • 1.13笔记
  • Elasticsearch连续剧之分词器
  • 实战Kaggle比赛:预测房价
  • 力扣 2287. 重排字符形成目标字符串
  • 22年终总结
  • [LeetCode周赛复盘] 第 328 场周赛20230115
  • Dubbo 服务暴露
  • 电商云仓是如何包装发货的?