Amazon DocDB 聚合排序与 MongoDB 不同吗?

Is Amazon DocDB aggregate sorting dfiferent from MongoDB?

因此,如果我对聚合管道的理解正确,那么管道中的每个操作都会在前一个操作 'generated'.

的文档上执行

因此,目前我们正在从自己托管的 Mongo 迁移到 AWS 托管的 DocDB。现在我从 Amazons 文档中读到关于 beforehand 的一些差异。但我不认为这个在里面,所以也许我只是做错了什么。

因此,我将这些文档添加到我的名为 interactions

的集合中
db.interactions.insert([
    {
    "_id" : ObjectId("5daf0eb72f60b87bb2df4579"),
    "meta_data" : {
        "behavior_id" : "52f46df7ce882cd1888f9123",
        "activity_id" : "576437f8feb8bcf4a08df23c",
    },
    "created_at" : 2,
},
{
    "_id" : ObjectId("5daf0eb72f60b87bb2df457a"),
    "meta_data" : {
        "behavior_id" : "56c7914bbc1b9c03001bc11a",
        "activity_id" : "576437f8feb8bcf4a08df23b",
    },
    "created_at" : 1,
}
])

如果我只是这样做:

db.interactions.aggregate([

    {$match: {}},
    {$sort: { created_at: -1 }},

])

在 DocDb 和 Mongo 上,我按预期的顺序得到相同的输出(并将排序编号更改为 1 会翻转结果)

(例如,我只是得到我在集合中的内容,但在创建时进行了下降排序)。

但是如果我现在添加以下组管道(我假设现在是针对我的排序文档完成的)。

{$group: { "_id": "$meta_data.behavior_id",  "activity_id": {$last: "$meta_data.activity_id"}}}

在 mongo 我明白了:

{ "_id" : "56c7914bbc1b9c03001bc11a", "activity_id" : "576437f8feb8bcf4a08df23b" }
{ "_id" : "52f46df7ce882cd1888f9123", "activity_id" : "576437f8feb8bcf4a08df23c" }

这似乎是正确的顺序,将顺序号更改为 1 也会影响此结果。但是在 DocDB 上我总是得到:

{ "_id" : "52f46df7ce882cd1888f9123", "activity_id" : "576437f8feb8bcf4a08df23c" }
{ "_id" : "56c7914bbc1b9c03001bc11a", "activity_id" : "576437f8feb8bcf4a08df23b" }

并且更改顺序不再执行任何操作。

这只是在 DocDBB 上无法正常工作的东西,还是我只是期待这里出现问题。

根据 MongoDB 文档:https://docs.mongodb.com/manual/reference/operator/aggregation/group/ 说明 $group does not order its output documents.

即使在他们提供的示例中,他们也$sort将其作为聚合的最后一部分。

我在这里发现了类似的问题: