我试图在更新的版本中仅投影出数组中匹配的元素。但是我遇到了错误:“ MongoError:> obj中的1个字段:{_id:0,lotes。$:1}”
如果我删除“ new:true”,它将起作用。但是后来我有了更新之前的文档。我真的很想要更新的版本。
怎么了?我该如何解决?
要约文档类似于:
Copy Local
Serie结构类似于:
{
_id
series: [ Serie ]
}
我正在使用猫鼬:
{
_id
public.available: Number
public.expDate: Date
}
答案 0 :(得分:1)
正如安东尼·温兹莱特(Anthony Winzlet)在链接中指出的那样,猫鼬似乎存在一个问题,如果您使用“ new:true”,则无法投影$ elemMatch。
所以我的解决方案是仅使用“ new:true”,而不进行任何预测。并稍后减少数组以获取$ elemMatch:
.then( (result) => {
var aux = result.series.reduce((acu, serie, index) => {
if (serie._id == req.params.serieId) return index;
});
var element = result.series[aux];
}
答案 1 :(得分:0)
对于其他遇到此错误的人,这也是尝试执行非法操作(例如尝试在findOne请求中更新数据库元素)时最常见的错误。
确保您的请求正确无误,例如findOneAndUpdate应该是您在收到此错误时的第一个呼叫端口。