我有mongodb文档,数据如下:
[{
"name": "Robin singh",
"developer": "java",
"address": "Robin Singh,Mohali",
"search_string": ["Robin", "Singh", "java"]
}, {
"name": "Rohan singh",
"developer": "java",
"address": "Rohan Singh,Mohali",
"search_string": ["Rohan", "Singh", "java"]
}]
我想与名为 Rohan singh 的开发人员 java 搜索文档,我使用了此查询:
{"search_string":{"$all":["Robin","Singh","java"]}}
但我得到了两个结果。
答案 0 :(得分:0)
尝试:
db.testcollection.aggregate([
{ $match: {"search_string":{"$all":["Robin","Singh","java"]}} },
{ $group: { _id: "$name"} }
])
答案 1 :(得分:0)
如果您同时拥有name
和developer
,那么您只需使用查询查询 -
db.collection.find({"name":"Rohan singh", "developer":"java"})
此外,如果您想检查search_string
何时包含您在$all
传递的确切参数,那么 - 您需要使用$size和$all运算符的组合来得到理想的结果。 size必须是$ all中使用的参数数量。在这里,你必须检查search_string
的大小到$ all中的参数数量,这样它才能搜索给定参数($ all),只搜索大小与参数数量匹配的search_string
。
以下查询可能对您有所帮助。
db.collection.find({
"name":"Rohan singh",
"search_string": {
$all: ["Rohan", "singh","java"]
},
"search_string": {
$size: 3 // This is the number of param you pass in $all
}
}).pretty()