[英]MongoDB aggregation by array field
假设我的收藏中包含以下文档:
{“ email”:“ jim@abc.com”,“ fb”:{“ name”:{“ full”:“ Jim Bent”}},“ apps”:[“ com.abc.1”,“ com。 abc.2" ]}
{“电子邮件”:“ john@abc.com”,“ fb”:{“名称”:{“完整”:“约翰·史密斯”}},“应用程序”:[“ com.abc.1”,“ com。 abc.3“]}
我想编写一个查询,然后通过一个csv文件将其导出,该文件将根据整个集合中的“ apps”数组字段输出电子邮件fb.name.full分组。 也就是说:对于“ com.abc.1”,它将输出Jim Bent和他的电子邮件以及John Smith和电子邮件。 对于“ com.abc.2”,它将仅输出Jim Bent,而对于“ com.abc.3”,它将仅输出John Smith。
我做了一些研究,但是mongoexport不允许复杂的查询,而且我也不能编写$ unwind函数。 所以我撞墙了。
任何建议表示赞赏。 谢谢。
您可以通过使用以下代码创建文件(例如: myquery.js
)来使用Javascript和mongo Shell进行此操作:
printjson(
db.collection.aggregate([
{$unwind: '$apps'},
{$group: { _id: '$apps', info: { '$push': { email: '$email', name: '$fb.name.full'}}}},
{$project: {app: '$_id', info: 1, '_id': 0}}
]))
那么您可以从命令行执行查询,如下所示:
mongo database myquery.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.