gpt4 book ai didi

MongoDB 聚合 - $unwind 顺序文档是否与嵌套数组顺序相同

转载 作者:行者123 更新时间:2023-12-04 00:55:05 24 4
gpt4 key购买 nike

我在想,在聚合管道中为嵌套数组的文档使用 $unwind 运算符是否会以与数组中项目的顺序相同的顺序返回解构的文档。例子:假设我有以下文件

{ "_id" : 1, "item" : "foo", values: [ "foo", "foo2", "foo3"] }
{ "_id" : 2, "item" : "bar", values: [ "bar", "bar2", "bar3"] }
{ "_id" : 3, "item" : "baz", values: [ "baz", "baz2", "baz3"] }

我想在我的应用程序代码中对所有文档中的所有值使用分页。所以,我的想法是使用 mongo 聚合框架来:

  1. 按 _id 对文档进行排序
  2. values 属性上使用 $unwind 来解构文档
  3. 使用 $skip 和 $limit 来模拟分页

所以使用上述示例的问题是:

是否保证以下聚合管道:

[
{$sort: {"_id": 1}},
{$unwind: "$values"}
]

将始终导致以下文档具有完全相同的顺序?:

{ "_id" : 1, "item" : "foo", values: "foo" }
{ "_id" : 1, "item" : "foo", values: "foo2" }
{ "_id" : 1, "item" : "foo", values: "foo3" }
{ "_id" : 2, "item" : "bar", values: "bar" }
{ "_id" : 2, "item" : "bar", values: "bar2" }
{ "_id" : 2, "item" : "bar", values: "bar3" }
{ "_id" : 3, "item" : "baz", values: "baz" }
{ "_id" : 3, "item" : "baz", values: "baz2" }
{ "_id" : 3, "item" : "baz", values: "baz3" }

最佳答案

我也在 MongoDB community forum 中问过同样的问题.证实我的假设的答案是由 MongoDB 成员发布的。

简要说明:

是的,上面例子中返回文档的顺序总是一样的。它遵循数组字段的顺序。

关于MongoDB 聚合 - $unwind 顺序文档是否与嵌套数组顺序相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63129606/

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