我有一个_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进行了检查,并且集合中的每个文档的格式都正确,因此我不知道此错误可能来自何处。
有什么想法吗?