如何从 MongoDB 集合中获取数组?


你可以使用聚合框架。我们首先创建一个包含文档的集合 -

> db.getArrayDemo.insertOne(
   {
      "CustomerId":101,
      "CustomerDetails":[
         {
            "CustomerName":"Larry",
            "CustomerFriendDetails":[
               {
                  "CustomerFriendName":"Sam"
               },
               {
                  "CustomerFriendName":"Robert"
               }
            ]
         },
         {
            "CustomerName":"Chris",
            "CustomerFriendDetails":[
               {
                  "CustomerFriendName":"David"
               },
               {
                  "CustomerFriendName":"Carol"
               }
            ]
         }
      ]
   }
);
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cda4949b50a6c6dd317adb7")
}

以下是使用 find() 方法从集合中显示所有文档的查询 -

> db.getArrayDemo.find().pretty();

这将生成以下输出 -

{
   "_id" : ObjectId("5cda4949b50a6c6dd317adb7"),
   "CustomerId" : 101,
   "CustomerDetails" : [
      {
         "CustomerName" : "Larry",
         "CustomerFriendDetails" : [
            {
               "CustomerFriendName" : "Sam"
            },
            {
               "CustomerFriendName" : "Robert"
            }
         ]
      },
      {
         "CustomerName" : "Chris",
         "CustomerFriendDetails" : [
            {
               "CustomerFriendName" : "David"
            },
            {
               "CustomerFriendName" : "Carol"
            }
         ]
      }
   ]
}

以下是从 MongoDB 集合中获取数组的查询 -

> db.getArrayDemo.aggregate([
   { "$unwind": "$CustomerDetails" },
   { "$unwind": "$CustomerDetails.CustomerFriendDetails"},
   {
      "$group": {
         "_id": null,
         "CustomerFriendDetails": { "$push": "$CustomerDetails.CustomerFriendDetails.CustomerFriendName" }
      }
   }
]);

这将生成以下输出 -

{ "_id" : null, "CustomerFriendDetails" : [ "Sam", "Robert", "David", "Carol" ] }

更新于: 2019 年 7 月 30 日

319 次浏览

开启你的职业生涯

完成课程获取认证

开始学习
广告
© . All rights reserved.