【发布时间】:2022-01-07 16:10:41
【问题描述】:
希望你没事。
我似乎找不到通过“股权 ID”聚合以下文档的方法。
{
"_id": {
"$oid": "6001dc246192c700013e8252"
},
"user": "blablabla",
"_type": "User::Individual",
"created_at": {
"$date": "2021-01-15T18:17:11.130Z"
},
"integrations": [{
"_id": {
"$oid": "6001dc62e7a0970001258da8"
},
"status": "completed",
"authentication_failed_msg": null
}],
"portfolios": [{
"_id": {
"$oid": "6001dc62e7a0970001258da9"
},
"_type": "SimplePortfolio",
"transactions": [{
"_id": {
"$oid": "6001dc62e7a0970001258daa"
},
"settlement_period": 2,
"expenses": 0,
"source": "integration",
"_type": "Transaction::Equity::Buy",
"date": {
"$date": "2020-03-02T00:00:00.000Z"
},
"shares": 100,
"price": 13.04,
"equity_id": "abcd"
}, {
"_id": {
"$oid": "6001dc62e7a0970001258dab"
},
"settlement_period": 2,
"expenses": 0,
"source": "integration",
"_type": "Transaction::Equity::Buy",
"date": {
"$date": "2020-03-02T00:00:00.000Z"
},
"shares": 1000,
"price": 1.03,
"equity_id": "efgh"
我尝试了类似的东西
db.collection.aggregate([{"$unwind": {'$portfolios.transactions'}},
{"$group" : {"_id": "$equity_id"}}])
遇到错误InvalidDocument: cannot encode object: {'$portfolios.transactions'}, of type: <class 'set'>
理想情况下,我想要一个按user 和equity_id 分组的列表及其份额的总和。有谁知道错误是由我的聚合还是文档结构引起的?
【问题讨论】:
-
试用 mongodb 文档非常好,它有这个 unwind example
-
你是对的@Takis_,感谢您指出这一点。我完全错过了这个“两阶段放松”的东西,这正是我所需要的。
标签: mongodb mongodb-query aggregation-framework pymongo