Node.js Mongoose-`CastError:使用时转换到数字失败`$“字段名”;
我有以下猫鼬模式:Node.js Mongoose-`CastError:使用时转换到数字失败`$“字段名”;,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有以下猫鼬模式: { lastEdit: Number translations: [{ submittedTimestamp: Number ... }] ... } 以及以下查询: Model.findOne({ "translations.submittedTimestamp": { $lte: "$lastEdit" } }) 但是,我得到一个错误,表示模型“translations”的路径“submittedTime
{
lastEdit: Number
translations: [{
submittedTimestamp: Number
...
}]
...
}
以及以下查询:
Model.findOne({
"translations.submittedTimestamp": { $lte: "$lastEdit" }
})
但是,我得到一个错误,表示模型“translations”的路径“submittedTimestamp”处的值“$lastEdit”的“castRor:Cast to number”失败。
如果我插入一个静态数字而不是$lastEdit
,在本例中是Unix时间戳,那么查询工作正常,这意味着它与我使用“$lastEdit”
的方式有关。关于如何解决这个问题有什么建议吗?您必须使用
是的,你是对的,我刚刚意识到,当我更改代码以确保时,你发布了一个答案。希望这能使将来的人受益!5分钟结束后,我会接受答案。我知道这有点晚了,但以下内容似乎也不起作用:
$expr:{$lte:[“$translations.submittedTimestamp”,“$lastdedit”]}
。但是,同样,如果我用一个静态值替换“$translations.submittedTimestamp”
,它确实有效。如果我切换数组中的值,那么它总是返回true。。。另外MongoDB文档说第一个值应该是小于或等于的值,在我的例子中应该是翻译。submittedTimestamp
明白了,我刚刚看到你的翻译。submittedTimestamp
是一个数组字段。那么,要与lastEdit
中的哪个元素匹配?嘿,对不起,我迟到了,但这似乎起作用了。是时候浏览一下这些文件了,哈哈。谢谢
Model.find({
"$expr": {
"$gte": [
{ "$size": {
"$filter": {
"input": "$translations",
"cond": { "$lte": ["$$this.submittedTimestamp", "$lastEdit"] }
}
}},
1
]
}
})