我正在使用这些文档对集合运行查询。
{"name": "Daniel", "tags": ["person", "owner", "father"]},
{"name": "Jane", "tags": ["person", "owner", "mother"]},
{"name": "Jimmy", "tags": ["person", "owner", "son"]}
现在,如果我想找到与标签人和所有者匹配的所有文件,我会做这样的事情
var match = ['person', 'owner'];
model.find({'tags': {$all: match}});
现在我需要做以下事情:
在单个查询中执行此操作的最有效方法是什么?
提前致谢,
d
答案 0 :(得分:0)
我建议您在应用程序层中添加条件,并使在服务器上执行的query
非常简单。
match
数组包含一个或多个元素,请添加一个查询字段
你的查询condition
,否则执行一个空的条件
归你所有的文件。片段:
var match = ['person', 'owner'];
var condition = {};
if(match.length > 0){
condition["tags"] = {$all:match};
}
db.model.find(condition);
说到这一点,使用$all运算符,无法在单个查询中同时实现这两个条件。
$ all运算符选择字段值所在的文档 包含所有指定元素的数组。