【问题标题】:Match all of the values specified in an array in Mongoose匹配 Mongoose 数组中指定的所有值
【发布时间】:2016-01-24 11:14:21
【问题描述】:
所以我想运行一个猫鼬查询来查找所有搜索数组标签都存在的帖子。
标签数量不同。
目前这会返回存在任何标签的帖子。
Post.find({
'tags.name': {
$in : searcharray
}
}, function(err, post) {
console.log(post);
}
);
我查看了文档,但无法将其完全拼凑在一起。
谢谢
【问题讨论】:
标签:
node.js
mongodb
mongoose
mongodb-query
【解决方案1】:
您想要$all,它基本上是一个语法较短的$and 操作,就像$in 是一个语法较短的$or 操作一样:
Post.find({"tags.name": { "$all": searcharray } }, function(err, posts) {
console.log(posts);
});
这要求您的“tags”数组的成员与 searchArray 列表中指定的“所有”项目的“名称”匹配。
作为“或”条件,$in 只会调用包含至少一个项目的任何文档,因此“和”条件表示所有项目。
【解决方案2】:
您需要使用$all 运算符。
Post.find({
'tags.name': {
$all : searcharray
}
}, function(err, post) {
console.log(post);
}
);