我有一个加入集合的格式_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,并且集合中的每个文档的格式都很好,所以我不明白这个错误可能来自哪里。
有任何想法吗?