node.js mongodb只更新第一个在数组中find的子文档

一个用户集合:

{ "_id" : ObjectId("5785d10570d6c39923d476cf"), "name" : "BB Cafe", "transaction" : [ { "id" : "m69bkn", "type" : "TYPE1", "amount" : 0, }, { "id" : "nhaa94", "type" : "TYPE1", "amount" : 0, } ] } 

更新声明

 var mongodbObjectID = require('mongodb').ObjectID; db.collection('user').update( {_id:new mongodb.ObjectID("5785d10570d6c39923d476cf"), "transaction.amount":0, "transaction.type":"TYPE1", "transaction.id":"nhaa94" }, {$set:{"transaction.$.amount":0.6}}, {w:1}, function(err, resultUpdate) { } 

它更新为transaction.id = "m69bkn"而不是"nhaa94"它只是更新第一个find的子文档,我猜我一直在这里search像

使用$更新数组在mongodb-native nodejs中不起作用

https://docs.mongodb.com/manual/reference/operator/update/positional/

使用NodeJS,MongoDB和Monk更新数组项

尝试使用$ elemMatch运算符来使用这样的查询

 { _id: ObjectId("5785d10570d6c39923d476cf"), "transaction": { "$elemMatch": { "amount": 0, "type": "TYPE1", "id": "nhaa94" } }