Mongodb:查找至less有一个元素与ObjectID不匹配的数组

我正在努力与MongoDB请求。 我有一个Play模式,保存一个Move对象的数组。 每个Move对象都以ObjectID的forms持有对Player的引用。 在这个问题之后,我试着去做

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

playerId保存一个ObjectID。 但是我得到的错误

 Error: Can't use $elemMatch with ObjectId 

我也尝试了以下

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

但它没有find适当的文件…任何想法?

一些Playlogging:

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

对于playerId = "56f32fe2f41638de3b3e4773"查询应该只返回对象A,因为它是唯一一个拥有至less一个玩家不同于56f32fe2f41638de3b3e4773的移动arrays。

好的,找出问题出在哪里…就这样做

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

它工作得很好!