【问题标题】:Mongodb insert object into an array which is inside another attributeMongodb将对象插入到另一个属性内的数组中
【发布时间】:2026-01-06 02:05:02
【问题描述】:

我需要通过将出价插入到 Bid 数组中来更新文档,该数组是 Bid 的一部分。下面是一个示例文档:

{
  "_id" : "1044300051",
  "Bids" : {
    "Bid" : [
        {
            "Bidder" : {
                "_id" : "pickford25",
                "_Rating" : 255,
                "Location" : "ANIME PARADISE",
                "Country" : "USA"
            },
            "Time" : "Dec-07-01 15:02:54",
            "Amount" : 1.12
        },
        {
            "Bidder" : {
                "_id" : "arlnwtkwsk@aol.com",
                "_Rating" : 61,
                "Location" : "ARCADE, NEW YORK",
                "Country" : "USA"
            },
            "Time" : "Dec-09-01 15:02:54",
            "Amount" : 1.25
        }
    ]
  }
}

以下是我尝试过的一些查询:

db.items.update({_id: "1678348584"}, {$set: {Bids: "Bid[]"}},{$push: {"Bids.Bid": {"Amount":1000}}});
db.items.update({_id: "1678348584"}, {$push: {"Bids": [{"Amount":1000}]}});

我在上述示例中尝试更新的特定 _id 最初将“Bids”设置为 null

【问题讨论】:

    标签: json database mongodb mongodb-update


    【解决方案1】:

    你快到了。要访问嵌套数组,您必须使用Bids.Bid。您的查询应该类似于

    db.items.update({_id: "1678348584"}, {$push: {"Bids.Bid": {"Amount":1000}}});
    

    【讨论】:

    • 这给了我这个错误: WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0, "writeError" : { "code" : 16837, "errmsg" : "位置运算符没有从查询中找到所需的匹配项。未扩展更新:Bids.$.Bid" } })
    • 我刚刚看到了。更新了查询。
    • 这给出了这个错误: "code" : 16837, "errmsg" : "cannot use the part (Bids of Bids.Bid) to traverse the element ({Bids: null})" —具体我正在尝试更新的 ID 最初将 Bids 设置为 null
    • 好吧,你没有在你的问题中提到这一点
    • 对不起,我不知道这会影响答案。我将编辑问题。
    最近更新 更多