gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:14:21 32 4
gpt4 key购买 nike

这是我使用 MongoDB 的第一天,所以请放轻松:)

我听不懂 $unwind 运算符,可能是因为英语不是我的母语。

db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);

项目运算符是我可以理解的,我想(它就像SELECT,不是吗?)。但是,$unwind(引用)为每个源文档中展开数组的每个成员返回一个文档

这像 JOIN 吗?如果是,$project 的结果如何(带有 _idauthortitletags 字段)可以与 tags 数组进行比较吗?

注意:我是从MongoDB网站上拿的例子,我不知道tags数组的结构。我认为这是一个简单的标签名称数组。

最佳答案

首先,欢迎来到 MongoDB!

要记住的是,MongoDB 采用“NoSQL”方法来存储数据,因此请从您的脑海中消除选择、连接等的想法。它以文档和集合的形式存储您的数据,这允许以动态方式从您的存储位置添加和获取数据。

话虽如此,为了理解 $unwind 参数背后的概念,您首先必须了解您试图引用的用例在说什么。来自 mongodb.org 的示例文档如下:

{
title : "this is my title" ,
author : "bob" ,
posted : new Date () ,
pageViews : 5 ,
tags : [ "fun" , "good" , "fun" ] ,
comments : [
{ author :"joe" , text : "this is cool" } ,
{ author :"sam" , text : "this is bad" }
],
other : { foo : 5 }
}

注意标签实际上是一个包含 3 个项目的数组,在本例中是“有趣”、“好”和“有趣”。

$unwind 的作用是允许您为每个元素剥离一个文档并返回该结果文档。用经典的方法来考虑这一点,相当于“对于 tags 数组中的每个项目,返回一个仅包含该项目的文档”。

因此,运行结果如下:

db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);

将返回以下文件:

{
"result" : [
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "fun"
},
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "good"
},
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "fun"
}
],
"OK" : 1
}

请注意,结果数组中唯一改变的是标签值中返回的内容。如果您需要有关其工作原理的其他引用,我提供了一个链接 here .希望这对您有所帮助,并祝您进入我迄今为止遇到的最好的 NoSQL 系统之一。

关于mongodb - MongoDB 中的 $unwind 运算符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448175/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com