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" ] }
您可以使用查询运算符执行以下操作:

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

db.Bookmarks.find({tags:{$all:['bbb',/^c/]})

检查语句中的
$有几种方法可以解释您要查找的内容。您可以展示一些示例文档,哪些文档应该与您想要的查询匹配吗?@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" ] }