如何更新一对多关系MongoDB

特朗·特兰

如果我有一个包含很多地址的Person集合,如何插入多个属于一个Person的地址?如果我是一对一的关系,而我会简单地做一些事情,我知道该怎么做:

db.persons.update({_id: '12345'}, {$set: {'address': '12345 fake st'}})

但是,这对于一对多关系不起作用,因为每次有人向该人添加地址时,该人的地址都会被替换。有人可以帮忙吗?先感谢您。

胡安·卡洛斯·法拉

如果要一个人保留许多地址,则可以创建address一个数组,也可以使用push运算符插入新地址

db.persons.update(
    { "_id": "12345" }, 
    { "$push": { "address": "12345 fake st"}}
);

您的架构将如下所示:

{
    "_id" : "12345",
    "address" : [
        "12345 fake st",
        "6789 second st",
        ...
    ]
}

当然,您可以根据需要使其复杂。因此,如果您需要为每个地址存储额外的信息,则可以将子文档插入address数组中。

{
    "_id" : "12345",
    "address" : [
        {
            "number" : "6789",
            "street" : "second st",
            "primary" : false
        },
        {
            "number" : "12345",
            "street" : "fake st",
            "primary" : true
        },
        ...
    ]
}

如注释中所述,如果要确保阵列中没有重复项,则应使用$addToSet提供该功能运算符。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Postgres中更新一对多关系?

来自分类Dev

如何以一对多关系插入,更新,删除?

来自分类Dev

MongoDB最佳实践-一对多关系

来自分类Dev

MongoDB /猫鼬一对多关系

来自分类Dev

MongoDB以一对多关系显示子项

来自分类Dev

在一对多关系上更新或创建

来自分类Dev

一对多关系LINQ更新查询

来自分类Dev

自动更新一对多关系

来自分类Dev

领域:如何建立一对多关系

来自分类Dev

如何执行单向一对多关系?

来自分类Dev

如何实现一对多关系

来自分类Dev

如何添加一对多关系的项目

来自分类Dev

如何执行单向一对多关系?

来自分类Dev

领域:如何建立一对多关系

来自分类Dev

如何在MongoDB / Mongoose中以一对多关系联接/填充3个表?

来自分类Dev

如何在Node.js中更新一对多关系?

来自分类Dev

如何在不使用while循环的情况下以一对多关系更新多行

来自分类Dev

如何更正具有一对多关系的更新领域对象?

来自分类Dev

如何在spring和hibernate中以一对多关系更新资源时摆脱空值

来自分类Dev

mongodb与嵌入式文档的一对多关系

来自分类Dev

MongoDB C#实体映射:“一对多关系”

来自分类Dev

mongodb与嵌入式文档的一对多关系

来自分类Dev

在Laravel中保存/更新一对多关系

来自分类Dev

laravel更新,雄辩地消除一对多关系

来自分类Dev

更新一对多关系,而无需NHibernate加载对象

来自分类Dev

Laravel雄辩地更新一对多关系

来自分类Dev

在Laravel的口才中更新一对多关系

来自分类Dev

在Laravel中保存/更新一对多关系

来自分类Dev

Laravel雄辩地更新一对多关系