Mongoose找到所有引用的文档

时间:2015-07-08 22:45:05

标签: javascript node.js mongodb express mongoose

mongoose是否提供了一种从上一个查询'result?

中查找所有引用文档的方法

例如:

Product
.find(query)
.exec(function(err, results) {
  ...
  Product
  .find({
    '$or': [
      // get all products where _id is in results.associatedProducts[]
    ]
  })
  ...
});

2 个答案:

答案 0 :(得分:1)

我无法找到一种用猫鼬本地做到这一点的方法,请参阅下面的工作解决方案。

Product
  .find(query)
  .exec(function(err, products) {
    ...
    var associatedSoftware = products.reduce(function(memo, current) {
      if(current.features && current.features.associatedSoftware) {
        return memo.concat(current.features.associatedSoftware.map(function(item) {
          return item._id;
        }));
      }
      return memo;
    }, []);

    Product.find({
      '$or': [
        ...
        { '_id': { '$in': associatedSoftware } }
        ...
      ]
    })
    .exec(function(err, associated) {
      ...
    });
  });

答案 1 :(得分:0)

您可以使用query population

Product
.find(query)
.populate('associatedProducts')
.exec(function(err, results) {
    // ...
});

这将返回一个格式如下的对象:

var product = {
    foo: bar,
    associatedProducts: [
        // Here are the associated products
        {
            // Product Object
        },
        {
            // Product Object
        },
        {
            // Product Object
        }
    ]
};