我可以在mongoDB中找到基于填充条件的文档吗?

时间:2015-12-15 10:52:21

标签: javascript angularjs node.js mongodb

我希望找到客户名字的订单,例如约翰'。想只使用mongo查询。

我有一个订单集合,如:

NSURL *imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", self.baseURL, imageURLString]];

[self setImageWithURLRequest:[NSURLRequest requestWithURL:imageURL]
            placeholderImage:placeholder
                     success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
        if (image)
        {
            weakSelf.image = image;
        }
 } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
}];

我的疑问:

{ 
    "_id" : ObjectId("5669891a49b065ae2d7a5ea7"), 
    "customer" : ObjectId("563a399a11c9b15001565463"),
    "quantity" : "6"
}

我收到了所有订单,但只填充匹配的条件客户。只需要匹配的条件订单。

有没有办法只找到使用mongo查询?

1 个答案:

答案 0 :(得分:1)

我不相信这是可能的。您可以使用Aggregation Operation到达那里,但您仍然可以获取所有文档,然后对其进行排序。您最好的选择可能只是两步查询操作。

  1. 以名字john为所有客户获取ID。
  2. 获取映射给这些客户的订单。
  3. Customer.find({firstName: 'john'})
        .select('_id')
        .exec(function(err, customerDocs) {
            if (err) {...}
            var customerIds = [];
            for (var i=0; i<customerDocs.length; i++) {
                customerIds.push(customerDocs[i]._id);                                     
            }
            Order.find({customer: {$in: customerIds}})
                 .exec(function(err, orderDocs) {...});
        });