通过objectId查询时找不到运算符$ oid

时间:2019-07-12 13:45:26

标签: mongodb

我有一个_id: string, a: ObjectID, b: ObjectID格式的联接集合。 使用.find({a: ObjectId('the object id')})查询时,一切正常:我得到了正确数量的结果。

但是,当使用.aggregate([ {$match: {a: ObjectId('the object id') } } ])查询时,出现以下MongoError:

Error: command failed: {
"operationTime" : Timestamp(1562938985, 1),
"ok" : 0,
"errmsg" : "unknown operator: $oid",
"code" : 2,
"codeName" : "BadValue",
"$clusterTime" : {
    "clusterTime" : Timestamp(1562938985, 1),
    "signature" : {
        "hash" : BinData(0,"rInT5fAfp2nUrPwHxMgtXkZsio4="),
        "keyId" : NumberLong("6703870996123746305")
    }
}
} : aggregate failed 

即使查询应该完全等效?

我问这个问题是因为在我的实际查询中,聚合要复杂得多。因此,我将整个复杂的查询复制到A mongo客户程序(Robo 3T)中,在那儿执行它,然后慢慢开始从中剥离聚合阶段,同时仍然显示错误。最后,我剩下了最简单的聚合阶段,即$ match:但是,我仍然遇到此错误。我手动检查了整个集合,并与$ exists和$ type进行了检查,并且集合中的每个文档的格式都正确,因此我不知道此错误可能来自何处。

有什么想法吗?

0 个答案:

没有答案