老实说,我不知道该如何标记这个问题,因此提前致歉。如果有人有任何标签建议,我可以用来更好地修饰问题,请告诉我。
我有一个基本上像这样的文档集合(为简洁起见,删除了额外的字段。为清楚起见,子集合不是分层设置,而是在典型的数据库中考虑了一对多关系): / p>
{
"_id" : "5d769cefbe793b0f0ce2768b",
"SubCollection" : [
{
"_id" : "5d769ceebe793b0f0ce27627"
},
{
"_id" : "5d769ceebe793b0f0ce2761d"
},
{
"_id" : "5d769ceebe793b0f0ce2762f"
},
{
"_id" : "5d769ceebe793b0f0ce27624"
}
]
}
我需要更新文档以将它们转换为如下形式:
{
"_id" : "5d769cefbe793b0f0ce2768b",
"SubCollection" : [
{
"_id" : "5d769ceebe793b0f0ce27627",
"Number" : 1
},
{
"_id" : "5d769ceebe793b0f0ce2761d",
"Number" : 2
},
{
"_id" : "5d769ceebe793b0f0ce2762f",
"Number" : 3
},
{
"_id" : "5d769ceebe793b0f0ce27624",
"Number" : 4
}
]
}
我完全不知道如何在MongoDB中编写此更新查询。我知道在SQL Server中,我只需要更改代表子集合的表并添加一个自动递增的ID字段即可,但据我所知,这在MongoDB中是不可能的。如果我真的不能使用自动递增字段,那么在SQL Server中执行此操作的另一种方法是在该字段中添加内容,然后执行以下操作:
WITH cte AS
(
SELECT Child.ID, ROW_NUMBER() OVER (PARTITION BY Parent.ID) AS rowNum
FROM Child
JOIN Parent on Parent.ID = Child.ParentID
)
UPDATE c
SET c.Number = rowNum
FROM Child c
JOIN cte ON cte.ID = Child.ID
MongoDB是否有任何类似的查询方法?