繁体   English   中英

如何在MongoDB的嵌入式文档中为数组的索引命名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM