猫鼬-`CastError:使用“ $ fieldName”时转换为数字失败`

时间:2019-02-08 04:18:38

标签: node.js mongodb mongoose

我有以下猫鼬模式:

{
    lastEdit: Number
    translations: [{
      submittedTimestamp: Number
      ...
    }]
    ...
}

以及以下查询:

Model.findOne({
    "translations.submittedTimestamp": { $lte: "$lastEdit" }
})

但是,我收到一个错误消息,说CastError: Cast to number failed for value "$lastEdit" at path "submittedTimestamp" for model "translations"

如果我插入一个静态数字而不是$lastEdit(在这种情况下是Unix时间戳),则查询工作正常,这意味着它与我使用"$lastEdit"的方式有关。有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

您必须使用$expr

Model.find({
  "$expr": {
    "$gte": [
      { "$size": {
        "$filter": {
          "input": "$translations",
          "cond": { "$lte": ["$$this.submittedTimestamp", "$lastEdit"] }
        }
      }},
      1
    ]
  }
})