我在为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不同。

最佳答案

好,找出问题出在哪里...

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


而且效果很好!

10-06 03:48