2016-11-11 185 views
1

我在我的mongo数据库中有这样一个集合,我们假设它被称为分类。MongoDB复合文本搜索

{ 
    "_id" : ObjectId("5810e15a762a39b41912a131"), 
    "validName" : "Eros", 
    "idUser" : ObjectId("1") 
} 
{ 
"_id" : ObjectId("5810e15a762a39b41912a132"), 
"validName" : "Eros", 
"idUser" : ObjectId("2") 
} 

我已经创建了一个复合索引,以便能够搜索我想要的两个值,比如这个。

db.taxonomic.createIndex({"idUser":1,"validName":1}) 

现在,我希望能够搜索并从它那里得到回报,只有当双方的参数都在收藏的同一文档中发现,这里是我的尝试:

db.taxonomic.find({$text:{$search:"Eros 2"}},{idUser:1,validName:1}) 

的这个方法的问题在于它会返回任何匹配的“Eros”或“2”,我想要的是在集合的文档中匹配“Eros”和“2”时返回值。

谢谢你的帮助!

+0

您需要添加一个文本索引,你能告诉我哪个领域你创建的文本索引? –

回答

0

我不认为你需要它的文本索引,如果你只想要特定的字符串

db.taxonomic.find({"$or" : [{"validName" : "Eros"},{"validName" : "2"}]},{idUser:1,validName:1}) 
+0

我正在寻找一个'和'操作符,但它仍然回答了我的问题。谢谢。 –