mongo 根据字段查询好说,要是这个字段是数组了怎么弄?

1,查询某个属性是数组的情况。

db.getCollection('streams').find({"streamrules.value" : "_probe_name=lxk-123"})

mongodb 命令行 嵌套字段查询和更新

这个是查出来一个结果的情况。换个值多的,就会查出来n个。

mongodb 命令行 嵌套字段查询和更新

这个条件,就查出来n个结果。

2,更新某个字段是数组的情况。

即更新某个是数组的某个属性。

db.getCollection('streams').update({"streamrules.value" : "_probe_name=lxk-123"}, {$set: {"streamrules.$.value": '大风车、咿呀咿呀哟'}}, false, true);

后面的false和true,分别是不存在这数据,就不插入新数据;查询修改所有符合条件的数据。

mongodb 命令行 嵌套字段查询和更新

mongodb 命令行 嵌套字段查询和更新

更新OK。其中  $  符号,起到占位符的作用。这个是和前面的 update 语句里面到相呼应的,要是前面没的话,就出问题了。

3,多个字段一起去查询,包含那个数组属性的字段

mongodb 命令行 嵌套字段查询和更新

4,再多来几个字段,在更新语句中的实例。

db.getCollection('streams').update({"title" : "lxk-lxk1111111","streamrules.value" : '_probe_name=lxk-123',"streamrules.rule_type" : 6}, {$set: {"streamrules.$.value": '大河向东流呀,风风火火。。。'}}, false, true);

mongodb 命令行 嵌套字段查询和更新

运行OK。

但是,查询条件中要是没这个数组字段,那就不OK了。

mongodb 命令行 嵌套字段查询和更新

但是,你要是在前面有个数组的key,只是嵌套的key不一样的话,也是可以的。

mongodb 命令行 嵌套字段查询和更新

 

相关文章: