gpt4 book ai didi

javascript - 我可以在 mongoDB 中根据填充条件查找文档吗?

转载 作者:可可西里 更新时间:2023-11-01 10:42:40 26 4
gpt4 key购买 nike

我想找到那些客户名字如“john”的订单。只想使用 mongo 查询。

我有一个订单集合,例如:

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

我的查询:

var page = req.query.page || 1;
var limit = req.query.limit || 20;
var skip = (page - 1) * limit;
var populateSearchQuery = { firstName: { '$regex': 'john', '$options': 'i' } }

Order.find({})
.skip(skip).limit(limit)
.populate('customer','firstName lastName', populateSearchQuery)
.exec(function(error, orders) {
if(error) {
return res.status(400).send({msg: 'Error occurred while getting orders.'});
}
return res.status(200).send(orders);
});

我收到了所有订单,但只填写了符合条件的客户。只想要匹配条件的订单。

有什么方法可以只使用mongo查询吗?

最佳答案

我不认为这是可能的。你可以用 Aggregation Operation 到达那里,但您仍然会获取所有文档,然后对它们进行分类。您最好的选择可能只是一个两步查询操作。

  1. 获取所有名字为 john 的客户的 ID。
  2. 获取与这些客户对应的订单。

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) {...});
});

关于javascript - 我可以在 mongoDB 中根据填充条件查找文档吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34287275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com