[英]How to give name to the index of an array in embedded document of MongoDB
我有一个关于公司员工的文档,每个员工都有多个地址。 这是一个嵌入式文档
{
"_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 ...如何给地址数组的每个索引赋予特定的名称?
您不能将索引命名为数组。 在您的情况下,您可以采用两种方法。 两者都需要更改数据库架构。 您可以用一种方式将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})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.