Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 在find方法中使用AND运算符_Mongodb - Fatal编程技术网

Mongodb 在find方法中使用AND运算符

Mongodb 在find方法中使用AND运算符,mongodb,Mongodb,我有一个带有数组字段的集合。如果要查找具有特定标记的所有文档,请使用下一个查询: db.Bookmarks.find({tags : {$regex: "bbb"}}) 是否可以找到包含2个或更多特定标签的所有文档?大概是这样的: db.Bookmarks.find({tags : {$regex: "bbb"}}).find({tags : {$regex: "ccc"}}) 或 更新 所有文件: > db.Bookmarks.find() { "Name" : "Lenta.ru"

我有一个带有数组字段的集合。如果要查找具有特定标记的所有文档,请使用下一个查询:

db.Bookmarks.find({tags : {$regex: "bbb"}})
是否可以找到包含2个或更多特定标签的所有文档?大概是这样的:

db.Bookmarks.find({tags : {$regex: "bbb"}}).find({tags : {$regex: "ccc"}})

更新

所有文件:

> db.Bookmarks.find()
{ "Name" : "Lenta.ru", "Timestamp" : 1380912671423, "URL" : "http://www.lenta.ru", "_id" : "8vJgjH2rKAsyfHPc9", "tags" : [  "aaa",  "bbb" ] }
{ "Name" : "Яндекс", "Timestamp" : 1380912663299, "URL" : "http://www.ya.ru", "_id" : "39o2BvPHgEHkzvS4Y", "tags" : [  "aaa",  "ccc" ] }
{ "Name" : "Google", "Timestamp" : 1380912656968, "URL" : "http://www.google.com", "_id" : "MkCYfEn3WenpFvQcm", "tags" : [  "aaa",  "bbb",  "ccc" ] }
我想同时获得所有带有bbb和ccc标签的文档。差不多

db.Bookmarks.find({tags : {$regex: "bbb" and "ccc"}})
结果将是:

{ "Name" : "Google", "Timestamp" : 1380912656968, "URL" : "http://www.google.com", "_id" : "MkCYfEn3WenpFvQcm", "tags" : [  "aaa",  "bbb",  "ccc" ] }
您可以使用查询运算符执行以下操作:

查找{tags:{$all:['bbb','ccc']} 您也可以使用正则表达式。要包含以c开头的标记,请执行以下操作:

db.Bookmarks.find{tags:{$all:['bbb',/^c/]}
检查$in语句有几种方法可以解释您要查找的内容。您可以展示一些示例文档,哪些文档应该与您想要的查询匹配吗?@Eran Medan,$in语句的工作方式类似于'OR'-子句。我将获取所有标记在数组中有一个值的文档。但是我需要标记包含数组中所有值的文档。@JohnnyHK,我已经更新了我的问题。是否可以将$all运算符和$regex运算符组合起来?用户只能输入标记的前几个字符。例如,db.Bookmarks.find{tags:{$all:['bbb','c']}}必须返回与db.Bookmarks相同的结果。find{tags:{$all:['bbb','ccc']}。有可能吗?@demas我不知道$regex运算符的具体情况,但是可以使用正则表达式,如更新的答案所示。
{ "Name" : "Google", "Timestamp" : 1380912656968, "URL" : "http://www.google.com", "_id" : "MkCYfEn3WenpFvQcm", "tags" : [  "aaa",  "bbb",  "ccc" ] }