Meteor使用带有Ids数组的$ in

时间:2015-06-04 18:01:52

标签: mongodb meteor

我正在尝试使用$ in和一组ID来回收集合

我有以下但是它不起作用

var blockByLocation = Blocks.find({location: location});
    var producersArray = [];
    blockByLocation.forEach(function (block) {
        producersArray.push(block.producerId);
    });

    console.log(producersArray);

producersList = Producers.find({$and:[{organizationId: user.organizationId}, {_id:{$in: producersArray}}]}).map(function (obj) {
            return {text: obj.name, id: obj._id};
});

2 个答案:

答案 0 :(得分:18)

您可以这样重写代码:

var producerIds = Blocks.find({
    "location": location
}).map(function (block) { return block.producerId; });

var producersList = Producers.find({
    "organizationId": user.organizationId,
    "_id": { "$in": producerIds }
}).map(function (obj) {
    return {
        "text": obj.name,
        "id": obj._id
    };
});

答案 1 :(得分:2)

这是基于Chidrams的更清晰的答案。工作代码示例。

var colleagueIds = Posts.find({ type:"colleagues" }).map(function (person) { return person.title; });
        //console.log(colleagueIds);

        return Meteor.users.find({
            "_id": { "$in": colleagueIds }
        });

请注意,map函数返回post对象的标题光标。如果你是一个优秀的Wordpress开发人员,那将是有道理的。但是,您可能想要返回对象的_id。