如果我有一个包含很多地址的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] 删除。
我来说两句