繁体   English   中英

MongoDB按数组字段聚合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM