spring mongodb push操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring mongodb push操作相关的知识,希望对你有一定的参考价值。

实现如图操作

参考技术A 降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。一个子系统的修改对其他子系统没有任何影响,而且子系统内部变化也不会影响到外观对象。
只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类。

MongoDB 数组操作

$push:向文档数组中添加元素,如果没有该数组,则自动添加数组。

db.users.insert({"name":"zhang"})
db.users.update({"name":"zhang"},{"$push":{"emails":"[email protected]"}})
db.users.update({"name":"zhang"},{"$push":{"emails":"[email protected]"}})

以上代码,先创建name为zhang的用户,再给该用户加入邮箱,放到emails数组中.
$addToSet:功能与$push相同,区别在于,$addToSet把数组看作成一个Set,如果数组中存在相同的元素,不会插入。

db.users.update({"name":"zhang"},{"$addToSet":{"emails":"[email protected]"}})
db.users.find()

可以看到,并没有两个[email protected]的邮箱.

$addToSet还可以与$each组合使用,一次添加多个值。

db.users.update({"name":"zhang"},{"$addToSet":{"emails":{"$each":["[email protected]","[email protected]","[email protected]"]}}})

$pop,与$push相对应,删除数组里的元素

db.users.update({"name":"zhang"},{"$pop":{"emails":{key:1}}});

key=1,从尾删除,key=-1,从头删除

$pull 删除指定元素,结合上面的例子,就是删除指定的邮箱

db.users.update({"name":"zhang"},{"$pull":{"emails":"[email protected]"}});

修改指定位置的元素:
数组每个元素都有索引,从0开始。经过上面的一系列操作,zhang的文档应该是这样的:

{ "_id" : ObjectId("51a16b02d2ded250f4aab338"), "emails" : [ "[email protected]", "[email protected]" ], "name" : "zhang" }

假如要把第一个邮箱修改成[email protected]:

db.users.update({"name":"zhang"},{"$set":{"emails.0":"[email protected]"}});

假如要把[email protected]替换成[email protected],在并不知道[email protected]索引时:

db.users.update({"name":"zhang","emails":"[email protected]"},{"$set":{"emails.$":"[email protected]"}});



































以上是关于spring mongodb push操作的主要内容,如果未能解决你的问题,请参考以下文章

Spring @transactional 是不是与 MongoDB 一起使用?

在 MongoDB 的 spring-data 中配置 GridFS 模板

MongoDB聚合操作总结

MongoDB聚合操作总结

MongoDB命令汇总

MongoDB 分片总结