如何使用带有新值的java在mongodb中的现有集合中附加现有数组

谢克·穆贾希德·阿里(Shaik Mujahid Ali)

我有一个mongo集合,例如:

{
    "_id": ObjectId("55cad746aed75601b4822cc9"),
    "entityId": "12",
    "entityType": "a",
    "nameIdentity": [{
        "fName": "abc",
        "lName": "def",
        "dob": "00",
        "address": "xyz"
    },

    ]
}

我正在使用mongodb java 3.0驱动程序并尝试匹配和更新。例如:我正在尝试entityId找到它,然后添加新的nameIdentity

我第二次通过

{
    "fName": "123",
    "lName": "456",
    "dob": "00",
    "address": "789"
}

对于我来说,entityId: 12如果匹配,那么我的新收藏应该像这样:

{
    "_id": ObjectId("55cad746aed75601b4822cc9"),
    "entityId": "12",
    "entityType": "a",
    "nameIdentity": [{
    "fName": "abc",
    "lName": "def",
    "dob": "00",
    "address": "xyz"
    }, {
    "fName": "123",
    "lName": "456",
    "dob": "00",
    "address": "789"
    }]
}

我想将其添加到相同的匹配对象或集合中。但是它替换了以前的数组并添加了新的数组,如下所示:

{
    "_id": ObjectId("55cad746aed75601b4822cc9"),
    "entityId": "12",
    "entityType": "a",
    "nameIdentity": [

    {
        "fName": "123",
        "lName": "456",
        "dob": "00",
        "address": "789"
    }
    ]
}

当实体ID匹配时,我希望添加的所有内容都不会更新。我试过的代码是:

mongoDatabase.getCollection("entity").findOneAndUpdate(
    updateDocument, new Document("$set",entityDocument));

我尝试了$push$set它创建了一个新的nameIdentity数组。但是我想添加相同的匹配nameIdentity数组。有什么建议我要去哪里错吗?

维斯瓦斯

您应该像下面这样使用$ push

db.collection.update({
    "entityId": "12"
}, {
    $push: {
    "nameIdentity": {
        "fName": "123",
        "lName": "456",
        "dob": "00",
        "address": "789"
    }
    }
})

使用mongo java驱动程序的等效查询类似于(已测试)

db.getCollection("entity").updateOne(new Document("entityId", "12"),
new Document("$push", new Document("nameIdentity", new Document("fName", "123").append("lName", "456")
    .append("dob", "00").append("address", "789"))));

如果要更新许多文档,请使用updateMany而不是updateOne传递必需的参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 React State 的现有数组中附加新值?

向JavaScript中的现有数组添加新值

向JavaScript中的现有数组添加新值

如何使用 TypeScript 中现有数组中的选定元素创建新数组?

使用现有数组中的唯一值创建新数组

如何将新值推送到值匹配的现有数组中?

如何在不循环的情况下使用现有数组值中的动态键映射新数组?

如何在MongoDb中将新值添加到现有数据中?

在现有数组中的数组中添加新对象

如何使用现有数组的元素创建新数组?

从Ruby中的现有数组创建新数组

从php中的现有数组创建新数组

如何使用Java驱动程序将文档与mongodb中的现有数组元素进行匹配

如何将数组附加到javascript中的现有数组

如何使用Java中的新整数在DB ACCESS中附加现有整数

如何将一个Observable数组附加到通过Angular异步管道使用的现有数组中?

如何从JavaScript中的现有数组重建数组?

如何从现有数组中创建嵌套数组

在现有数组中添加额外的元素和值

如何使用codeigniter中的会话动态地将新数组添加到现有数组中

使用JS中现有数组的一些值创建一个新数组

如何使用扩展运算符使用现有数组取消新值?

将键附加到现有数组值

使用 codeigniter 检查结果数组中的任何值是否与现有数组的值相似

如何从 SwiftUI View Init 中的现有数组创建新数组

如何从php中的现有数组制作一个新数组?

如何动态地将新数组添加到现有数组中

将新值推送到特定位置的现有数组中 React Hooks

如何更新而不替换mongodb中的现有数据?