匹配Mongoose中数组中指定的所有值

时间:2015-10-25 07:44:46

标签: node.js mongodb mongoose mongodb-query

所以我想运行一个mongoose查询来查找所有searcharray标签都存在的帖子。

标签的数量不尽相同。

目前,这会返回存在任何标签的帖子。

Post.find({
        'tags.name': { 
            $in : searcharray
        }
    }, function(err, post) {

        console.log(post);

    }
);

我检查了文档并且不能将这个文件拼凑在一起。

由于

2 个答案:

答案 0 :(得分:4)

你想要$all,这基本上是$and操作,语法更短,因为$in$or操作,语法更短:

Post.find({"tags.name": { "$all": searcharray } }, function(err, posts) {
        console.log(posts);
});

这需要您的"标签"数组的成员匹配" name"为了"所有" searchArray列表中指定的项目。

作为"或"条件$in只是召回任何包含至少一个项目的文件,所以"和"条件是指所有项目。

答案 1 :(得分:0)

您需要使用$all运算符。

Post.find({
        'tags.name': { 
            $all : searcharray
        }
    }, function(err, post) {

        console.log(post);

    }
);