我收集了一些推文,我试图将根级别的转推(类似于引用推文)输出到新集合,以便稍后将它们与使用转储的原始集合合并,恢复)。 转推状态是tweet文档中的一个子文档,可能有多个推文转发同一推文。 如何在根级上进行转推,并添加一个名为'retweeted_by'的数组,其中包含所有推特转发的ID?mongodb:返回子文档并跟踪父代
请记住,我将推文ID用作主索引(_id),以避免在组合(mongorestore)集合时创建重复项。
我收藏有以下形式:
{
"_id" : "123456",
"other_fields1" : "values1",
"retweeted_status" : {
"retweet_id": "159753",
"other_fields2" : "values2",
}
}
理想的产量预计将看起来像:
{
"_id" : "159753",
"other_fields2" : "values2",
"retweeted_by" : [ "123456", "974631", "121212"]
}
编辑澄清:
子文档中的字段(other_fields2 )是多个字段(〜28),并非全部存在于其他推文中
'db.collection.aggregate([{$组:{_id: “$ retweeted_status.retweet_id”,retweeted_by :{$ push:“$ _id”}}}])' – felix
@felix谢谢,但这只输出retweeted_status的id,而不是retweedted_status的整个子文档,在我的示例“other_fields2”中调用...我想在我需要使用$ replaceRoot将子文档作为newRoot,并以某种方式向其添加数组retweted_by –
add'other_fields2:{$ first:“$ retweeted_status.other_fields2”}'。请看[mongodb documentation $ group](https://docs.mongodb.com/manual/reference/operator/aggregation/group/) – felix