如何将MongoDB查询转换为字典



我有一个集合在我的MongoDB:

{ userId: 1234, name: 'Mike' }
{ userId: 1235, name: 'John' }
...

我想得到一个形式为

的结果
dict[userId] = document

换句话说,我想要的结果是一个字典,其中userId是键,文档的其余部分是值。

我该怎么做呢?

您可以使用$arrayToObject来做到这一点,您只需要将其格式化为k,v之前的数组。

不清楚是为所有文档使用一个字典,还是为每个文档使用字典格式。我猜你想要第一个选项,但我同时显示了两个:

一本字典对于所有数据*,需要$group(也格式化数据):

db.collection.aggregate([
{
$group: {
_id: null,
data: {$push: {k: {$toString: "$userId"},  v: "$$ROOT"}}
}
},
{
$project: {data: {$arrayToObject: "$data"}}
},
{
$replaceRoot: {newRoot: "$data"}
}
])

看看它是如何在playground示例中工作的-一个字典

*注意,在这个选项中,所有的数据都被插入到一个文档中,并且文档的大小有限制。

字典格式:如果您希望获得所有文档作为不同的结果,但使用字典格式,只需将聚合的第一步替换为:

{
$project: {
data: [{k: {$toString: "$userId"}, v: "$$ROOT"}],
_id: 0
}
},

看看它是如何在playground示例中工作的- dict per document

相关内容

  • 没有找到相关文章

最新更新