gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:21:27 27 4
gpt4 key购买 nike

用户集合:

{

"_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"我猜它只是更新了第一个找到的子文档我一直在这里搜索,就像

update array with $ is not working in mongodb-native nodejs

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

Updating an array item using NodeJS, MongoDB & Monk

最佳答案

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

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

关于node.js mongodb 只更新数组中第一个找到的子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39071359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com