【发布时间】:2020-08-14 01:08:00
【问题描述】:
我正在尝试仅在更新版本中投影出匹配的数组元素。但我收到错误消息:“MongoError: >1 field in obj: { _id: 0, lotes.$: 1 }”
如果我删除“new: true”,它会起作用。但后来我有更新前的文档。我真的很想要更新的版本。
怎么了?我该如何解决?
Offer 文档类似于:
{
_id
series: [ Serie ]
}
系列结构类似于:
{
_id
public.available: Number
public.expDate: Date
}
我正在使用猫鼬:
var query = {
'_id': offerId,
'series': {
$elemMatch: {
'_id': serieId,
'public.available': {$gt:0},
'public.expDate': {$gt: now}
}
}
};
var update = {
$inc: { 'series.$.public.available' : -1 }
};
var options = { // project out just the element found, updated
new:true,
select: {
'_id': 0,
'series.$': 1
}
};
Offers.findOneAndUpdate(query, update, options)
.then( element => {
...
}
【问题讨论】:
-
尝试使用
$elemMatch投影...select: { '_id': 0, 'series': { $elemMatch: { 'public.available': { $gt :0 }, 'public.expDate': { $gt: now } } } } -
我刚试过安东尼。我收到错误“MongoError: >1 field in obj: { _id: 0, series: { $elemMatch: { public.available: { $gt: 0 }, public.expDate: { $gt: new Date(1534944191392) } } } }"
-
我在任何地方都找不到这个错误的解释..