MongoDB 中的 $unwind 运算符是什么?


MongoDB 中的 $unwind 运算符对每个数组都相同,它返回映射文档。下面是 $unwind 运算符在 MongoDB 中的演示。

为了理解这个概念,让我们创建一个带有文档的集合。创建带有文档的集合的查询如下所示 -

> db.unwindOperatorDemo.insertOne({"StudentName":"Larry","StudentAge":23,"StudentSubje
ct":["C","C++","Java","MongoDB"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c7ef5f3559dd2396bcfbfc8")
}

在 find() 方法的帮助下,显示集合中的所有文档。查询如下所示 -

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

以下是输出 -

{
   "_id" : ObjectId("5c7ef5f3559dd2396bcfbfc8"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentSubject" : [
      "C",
      "C++",
      "Java",
      "MongoDB"
   ]
}

以下是 $unwind 运算符的演示。查询如下所示 -

> db.unwindOperatorDemo.aggregate(
   ... { $project : {
      ... StudentName : 1 ,
      ... StudentAge: 1 ,
      ... StudentSubject : 1
   ... }},
   ... { $unwind : "$StudentSubject" }
... ).pretty();

以下是输出 -

{
   "_id" : ObjectId("5c7ef5f3559dd2396bcfbfc8"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentSubject" : "C"
}
{
   "_id" : ObjectId("5c7ef5f3559dd2396bcfbfc8"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentSubject" : "C++"
}
{
   "_id" : ObjectId("5c7ef5f3559dd2396bcfbfc8"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentSubject" : "Java"
}
{
   "_id" : ObjectId("5c7ef5f3559dd2396bcfbfc8"),
   "StudentName" : "Larry",
   "StudentAge" : 23,
   "StudentSubject" : "MongoDB"
}

查看示例输出,“StudentName” 和 “StudentAge” 映射到每个 “StudentSubject” 数组字段。

更新于:30-Jul-2019

282 次浏览

开启你的 职业

完成课程获取认证

开始
广告