Mongodb:查找包含数组的文档,其中至少有一个元素与ObjectID不匹配

时间:2016-03-24 06:02:01

标签: node.js mongodb

我正在努力处理MongoDB请求。我有一个Play架构,其中包含一组Move个对象。每个Move对象都以ObjectID的形式保存对Player的引用。在this question之后我尝试了

{ 'moves.player': { $elemMatch : { $ne : playerId } } }

其中playerId包含ObjectID。但是我收到了错误

Error: Can't use $elemMatch with ObjectId

我也尝试了以下

{ 'moves.player.str': { $elemMatch : { $ne : playerId.toString() } } }

但它没有找到合适的文件......有什么想法吗?

示例

一些Play条记录:

A = {
    "moves": [
        { player: { $oid: "56f32fe2f41638de3b3e4773" } },
        { player: { $oid: "56f32fe2f41638de3b3e4774" } }
    ]
}
B = {
    "moves": [
        { player: { $oid: "56f32fe2f41638de3b3e4773" } }
    ]
}

playerId = "56f32fe2f41638de3b3e4773"的查询应该只返回对象A,因为它是唯一一个具有移动数组的对象,其中至少有一个玩家与56f32fe2f41638de3b3e4773不同。

1 个答案:

答案 0 :(得分:2)

好的,找出问题出在哪里......只需做

{ "moves": { $elemMatch: { "player": { $ne : playerId } } } }

它运作得很好!