相关文章推荐
气势凌人的电池  ·  django ...·  2 周前    · 
豁达的羊肉串  ·  Qt Json的使用教程 - ...·  2 周前    · 
旅行中的砖头  ·  Qt Json_qt ...·  2 周前    · 
千年单身的柚子  ·  Configure the Windows ...·  4 月前    · 
悲伤的茄子  ·  操作系统:Linux -- ...·  10 月前    · 
温柔的大葱  ·  编译安卓S出现depends on ...·  10 月前    · 

由于mongo的弱关联关系,导致mongo的内嵌数组会被频繁使用,以达到一定的"关联关系"。所以对mongo的数组的操作也是非常重要的。接下来简单的介绍一下mongo对数组的操作,至于用java进行这些操作,请参考java对mongo的基本操作,套用一下即可

操作符: $push 向已有的数组末尾加入一个元素,若数组不存在则会自动创建数组,可以增加重复元素。

例句:db.blog.update({"title":"A"},{$push:{"comments":{"testAdd":"T"}}});

则向blog集合中的title为A的文档中的comments数组中的末尾增加了 {"testAdd":"T"}记录,如果文档中没有comments数组,则会自动创建comments数组,然后进行添加,但是如果匹配的条件 {"title":"A"}不存在则不会自动添加,而是添加失败。

操作符: $addToSet 可以向数组内增加元素,但是如果元素已存在(重复元素),则增加失败

例句: db.blog.update ({"title":"A"},{$addToSet:{"comments":{"testAdd":"T"}}});

则向blog集合中的title为A的文档中的comments数组中的末尾增加了 {"testAdd":"T"}记录,如果文档中没有comments数组,则会自动创建comments数组,但是如果第二次执行同样的语句则会发现数据库中并没有进行添加操作,因为数据这时重复了

$addToSet 还可以和 $each 进行配合使用,一次向数组中添加多条内容

例句: db.blog.update ({"title":"A"},{$addToSet:{"comments":{$each:[{"testAdd":"T"}, {"testAdd":"X"} ]}}});

则向blog集合中的title为A的文档中的comments数组中的末尾增加了 {"testAdd":"T"}和 {"testAdd":"X"} 记录,这里注意$each后面跟的是一个数组,他会遍历数组中的内容,一一执行

操作符: $pop 从数组的一端删除元素

例句: db.blog.update ({"title":"A"},{$pop:{"comments":1}}) ;

则删除了blog集合中的title为A的文档中的comments数组中的最后一条记录 ,1::删除最后一条数据,-1:删除第一条数据

但是很多情况下我们需要根据条件去删除一下数组中的记录,这是$pop就帮不上什么忙了,就需要下一个操作符了

操作符: $pull

例句: db.blog.update ({"title":"A"},{$pull:{"comments":{"testAdd":"T"}}});

则删除了blog集合中的title为A的文档中的comments数组中所有满足条件 {"testAdd":"T"}的元素

操作符: $set 修改数组中的元素

例句: db.blog.update ({"comments.testA dd":"T"},{$set:{"comments.$.testAdd":"z"}});

这里注意第一个查询条件必须数组.字段名,否则修改失败,有人可能会问后面的 {"comments.$.testAdd":"z"}中的$符是干嘛用的,他在这里面代表的相当于是数组的下表,如果我们明确的知道下标的话,我们完全可以这么写,比如下表为0: {"comments.0.testAdd":"z"},但大多数情况下我们是不知道下标的,所以用通配符$来表示,这样只会修改匹配的第一条数据,而不是所有匹配到的数据,这点需要注意

例句:db.blog.find({"comments.testAdd":"T"})

这里返回的是整个文档,至于如何返回想要的结果接下来的博客会介绍。

由于mongo的弱关联关系,导致mongo的内嵌数组会被频繁使用,以达到一定的"关联关系"。所以对mongo的数组的操作也是非常重要的。接下来简单的介绍一下mongo对数组的操作,至于用java进行这些操作,请参考java对mongo的基本操作,套用一下即可1、增加
MongoDB 的文档类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null、布尔、数字、字符串、 数组 及对象). JSON的数据类型的局限性: 1.无日期类型,对日期型的处理较为繁琐 2.无法区分浮点数和整数、32位和64位 3.其他类型表示局限 如函数、正则式等 Mongodb 使用BSON(Binary JSON)来组织数据,BSON还提供日期、32位数字、64位数字等类型。下面为在 mongodb shell中这些类型在文档中是如何表示: 1、null  用于表示空值或者不存在的字段。 {“name”:null} 2.布尔  布尔类型、即true和false
Mongo Template 并列条件查询和 数组 字段 追加 操作 前言Demo环境一、 Mongo Template一个提醒二、使用步骤1.引入库2.连接 MongoDB 集群3.1.并列查询document的pojo同时 and + or 查询映射的查询语句3.2. 数组 字段的 追加 操作 映射的语句总结 这里我们使用 Mongo Template来完成并列的and、or 查询和对document里的 数组 字段的 追加 操作 。 Demo环境
最近公司需要使用 mongodb 作为一个无知的我,学习了一下,翻阅了大量的教程,简单的就不说了。附个链接: http://www.runoob.com/ mongodb / mongodb -tutorial.html 关于 内嵌 对象,当时搞得头大。所以这里总结一下,做个笔记。 1、 Java Bean对象 public class EventRead implements Serializable ...
import py mongo client = py mongo . Mongo Client(" mongodb ://localhost:27017/") db = client["test"] col = db['test'] col.drop() docs=[ {'name':{'first':'wang','last':'ming'},'age':15,'score':[{'chi':60...
# mongo 建立连接 if replicaset_ mongo : self.client = Mongo Client([host1_ mongo , host2_ mongo ], replicaSet=replicaset_ mongo , port=int(port_ mongo )) self.client.admin.auth...
可以使用 Mongo Template的updateFirst或者updateMulti方法来修改 数组 。具体方法是通过Query对象指定要修改的文档,然后使用Update对象来指定要修改的 数组 操作 。比如要向一个 数组 中添加新元素,可以使用$push 操作 ,代码如下: Query query = new Query(Criteria.where("id").is("xxx")); Update update = new Update().push("arrayFieldName", "newElement"); mongo Template.updateFirst(query, update, collectionName); 其中,id为文档的主键值,arrayFieldName为要修改的 数组 字段名,newElement为要添加的新元素。updateFirst方法表示只修改第一个匹配的文档,如果要修改所有匹配的文档则使用updateMulti方法。需要注意的是,如果要修改的 数组 不存在,则会自动创建。