来自dict数组的独特dict键

时间:2018-02-10 04:10:49

标签: mongodb

我正在使用MongoDB开发一个项目。到目前为止,我已设法将文档上传到数据库。记录看起来像

doc1 = {'customer_id': 1,
    'order': "[{'item': 123, 'unit_price': 2.0}, \
                  {'item': 124, 'unit_price': 2.5}]"}
doc2 = {'customer_id': 2,
    'order': "[{'item': 123, 'unit_price': 2.0}, \
                  {'item': 126, 'unit_price': 1.5}]"}

collection.insert(doc1)
collection.insert(doc2)

我想从该系列中找到不同的物品。我到目前为止的尝试

 db.collection.distinct("order.item")

预期产出:

[123,124,126]

这不是很有效,因为order是一个数组。我正在寻找一些方法来unnest数组来获得不同的项目编号。最后,我想得到这些不同项目的计数。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

MongoDB确实为对象数组中的嵌套项返回distinct:

https://docs.mongodb.com/manual/reference/method/db.collection.distinct/#return-distinct-values-for-an-embedded-field

在您的情况下,db.collection.distinct("order.item")应该从订单集合中返回不同项目的数组