Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose-`CastError:使用时转换到数字失败`$“字段名”;_Node.js_Mongodb_Mongoose - Fatal编程技术网

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
    ]
  }
})