mongo 根据字段查询好说,要是这个字段是数组了怎么弄?
1,查询某个属性是数组的情况。
db.getCollection('streams').find({"streamrules.value" : "_probe_name=lxk-123"})
这个是查出来一个结果的情况。换个值多的,就会查出来n个。
这个条件,就查出来n个结果。
2,更新某个字段是数组的情况。
即更新某个是数组的某个属性。
db.getCollection('streams').update({"streamrules.value" : "_probe_name=lxk-123"}, {$set: {"streamrules.$.value": '大风车、咿呀咿呀哟'}}, false, true);
后面的false和true,分别是不存在这数据,就不插入新数据;查询修改所有符合条件的数据。
更新OK。其中 $ 符号,起到占位符的作用。这个是和前面的 update 语句里面到相呼应的,要是前面没的话,就出问题了。
3,多个字段一起去查询,包含那个数组属性的字段
4,再多来几个字段,在更新语句中的实例。
db.getCollection('streams').update({"title" : "lxk-lxk1111111","streamrules.value" : '_probe_name=lxk-123',"streamrules.rule_type" : 6}, {$set: {"streamrules.$.value": '大河向东流呀,风风火火。。。'}}, false, true);
运行OK。
但是,查询条件中要是没这个数组字段,那就不OK了。
但是,你要是在前面有个数组的key,只是嵌套的key不一样的话,也是可以的。