mongon常用命令3--标签数组匹配
1、mongon数组标签tag匹配案例1(同个数组,且内容相同):
数据库是这样的:
我想要的是从我的tag标签返回搜索到的关键词:
(1)数组中单个匹配:(单个匹配,只要数组中含有这个关键字,那么都会返回)
db.ss_tests.find({tag:'小学'} )
结果:
数据很杂乱,去一下不必要的字段:字段后加0,表示不显示。
db.ss_tests.find({tag:'小学'},{content:0,_id:0,id:0} )
结果这样就很简洁了:
(2)多个条件匹配:
db.ss_tests.find( { tag:{$all: ['高中',"语文"]} },{content:0,id:0,_id:0} )
运行结果:
加了关键字$all,它会返回文档中符合条件的数组,只要包含高中,语文就会返回;而且会忽视数组中原本该关键字的顺序,和数组是否存在其它元素。
但是你如果这样匹配你的数据库:
db.ss_tests.find( { tag: ['高中',"语文"] } )
结果将会空白,返回没有什么,它的意思是查询所有数组元素为高中,语文的,但是只能包含高中,语文这两个关键字,其它不行,由于我数据库的标签都是三个元素的,所以无法打印出结果:
官方文档存在加all与不加all的说明,下面附上原说明:
不加all:
翻译:下面的这个例子会查询所有文档中的tags数组,这些数组必须包含确切的两个元素“red”和“blank”,并且顺序也是特定的,就是即使存在有的文档含有red和blank,但是顺序改变,它也不会反馈给你。
加了all:
翻译:相反,如果你希望找到的数组包含上面的这两个元素red和blank,然而忽略其它元素是否存在,并且也忽略它在数组中的顺序,那么你可以使用 $all 这个运算符
- -
2.mongon数组标签tag匹配案例2(同个数组,但内容不相同):
数据库是这样的:
tag内容1:
tag内容2:
即我有一个tag数组标签,但是里面存放的内容不相同,但是我想查询的时候实现如下功能:
查询:‘五年级试卷的时候’顺便要查询【‘小学’,‘四年级’】所有内容
{ $or:[ {tag:{$all:['小学','四年级']}}, {tag:'五年级试卷'}] }
运行结果:
案例3待更......
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。