gpt4 book ai didi

javascript - 在投影字段中使用 $elemMatch - 未根据需要进行过滤

转载 作者:太空宇宙 更新时间:2023-11-04 02:37:15 24 4
gpt4 key购买 nike

此架构:

var Order = new Schema({
name: String,
products: [{
product: {
type: Schema.Types.ObjectId,
ref: "Product"
},
qty: Number
}]
});

我想查找并返回仅包含具有匹配 ID 的产品的订单。我对 $elemMatch 的尝试没有成功,似乎返回了包含所有产品的整个订单。我可以使用位置运算符 ($),但在本例中希望专门使用 $elemMatch。

请注意,订单中的每个产品都是唯一的(在该订单内)

这将返回所有产品:

Order.find({ _id: req.params.id}, { 'products.product': {$elemMatch: { _id: req.params.product }}}, function(err, order) {

这将返回空:

Order.find({ _id: req.params.id}, { 'products': {$elemMatch: { 'product._id': req.params.product }}}, function(err, order) {

什么是正确的语法?我希望订单退回时只包含一件(匹配的)产品。

最佳答案

products数组中,product字段直接包含产品的id,因此正确的语法是:

Order.find(
{ _id: req.params.id},
{ products: {$elemMatch: { product: req.params.product }}},
function(err, order) { ... });

关于javascript - 在投影字段中使用 $elemMatch - 未根据需要进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211714/

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