mongodb常用命令(3)--标签数组匹配

mongon常用命令3--标签数组匹配

1.mongon数组标签tag匹配例子:
数据库是这样的:
mongodb常用命令(3)--标签数组匹配_第1张图片

我想要的是从我的tag标签返回搜索到的关键词:
(1)数组中单个匹配:(单个匹配,只要数组中含有这个关键字,那么都会返回)

db.ss_tests.find({tag:'小学'} )

结果:
mongodb常用命令(3)--标签数组匹配_第2张图片
数据很杂乱,去一下不必要的字段:字段后加0,表示不显示。

db.ss_tests.find({tag:'小学'},{content:0,_id:0,id:0} )

结果这样就很简洁了:
mongodb常用命令(3)--标签数组匹配_第3张图片
(2)多个条件匹配:

db.ss_tests.find( { tag:{$all: ['高中',"语文"]} },{content:0,id:0,_id:0} )

运行结果:
mongodb常用命令(3)--标签数组匹配_第4张图片
加了关键字$all,它会返回文档中符合条件的数组,只要包含高中,语文就会返回;而且会忽视数组中原本该关键字的顺序,和数组是否存在其它元素。
但是你如果这样匹配你的数据库:

db.ss_tests.find( { tag: ['高中',"语文"] } )

结果将会空白,返回没有什么,它的意思是查询所有数组元素为高中,语文的,但是只能包含高中,语文这两个关键字,其它不行,由于我数据库的标签都是三个元素的,所以无法打印出结果:
图片.png

官方文档存在加all与不加all的说明,下面附上原说明:
不加all:
mongodb常用命令(3)--标签数组匹配_第5张图片

翻译:下面的这个例子会查询所有文档中的tags数组,这些数组必须包含确切的两个元素“red”和“blank”,并且顺序也是特定的,就是即使存在有的文档含有red和blank,但是顺序改变,它也不会反馈给你。

加了all:
mongodb常用命令(3)--标签数组匹配_第6张图片

翻译:相反,如果你希望找到的数组包含上面的这两个元素red和blank,然而忽略其它元素是否存在,并且也忽略它在数组中的顺序,那么你可以使用 $all 这个运算符

    • -

(2)待更……

你可能感兴趣的:(mongodb)