我有一份关于公司员工的文件,每个员工都有多个地址。这是一个嵌入式文档
{
"_id" : 13,
"emp_name" : "Joy Pett",
"emp_gender" : "Male",
"emp_address" : [
{
"street" : "123 Fake Street",
"city" : "Faketon",
"state" : "MA"
},
{
"street" : "1 Some Other Street",
"city" : "Boston",
"state" : "MA"
}
]}
这是我在RoboMongo中运行查询时输出的快照
它将数据插入到文档中,地址存储在嵌入式数组中。我想为员工的每个地址指定一个特定的名称。例如,Address1,Address2等。默认情况下,Mongodb为数组的每个索引提供一个数值,如0,1,2 ......如何为地址数组的每个索引指定一个特定的名称?
答案 0 :(得分:2)
您无法将索引命名为数组。在你的情况下,你可以通过两种方法。两者都需要更改数据库架构。在某种程度上,您可以将emp_address
定义为:
"emp_address":
{
"address1":
{
"street" : "123 Fake Street",
"city" : "Faketon",
"state" : "MA"
},
"address2":
{
"street" : "1 Some Other Street",
"city" : "Boston",
"state" : "MA
}
}
..等等。在这种情况下,您可以访问"emp_address.address.street"
等元素。
另一种方法非常简单,我建议使用这种方法。在这种情况下,您可以在emp_address数组中添加一个名为address_type的键。样本如下所示:
"emp_address" : [
{
"address_type": 1,
"street" : "123 Fake Street",
"city" : "Faketon",
"state" : "MA"
},
{
"address_type": 2
"street" : "1 Some Other Street",
"city" : "Boston",
"state" : "MA"
}
]
要访问员工的地址1,您可以提供以下查询:
db.employee.find({" _id":13," emp_address.address_type":1},{" emp_address。$":1} )