如何在 MongoDB 中查询具有未知键的 json 数组?
How to query a json array with unknown key in MongoDB?
有一个 MongoDB 数据库,其中的文档都是这样的:
{
"_id": {
"$oid": "62371a3c8200184f3b49d9e7"
},
"po_id": "123456",
"po_detail": [{
"10065": {
"price": "123.45",
"product": "P1"
}
}, {
"11121": {
"price": "678.90",
"product": "P2"
}
}]
}
我想按“产品”(例如“P1”或“P2”)查找文档,但数组中的键(例如“10065”或“11121”)未知。
如何在MongoDB中查询这样的文档(使用pymongo)?
谢谢!
按“产品”(例如“P1”或“P2”)查找文档不是很清楚。一般来说,数据模型很差,你应该考虑 re-design.
查询可能如下所示:
db.collection.aggregate([
{ $unwind: "$po_detail" },
{
$set: {
po_detail: { $first: { $objectToArray: "$po_detail" } }
}
},
{ $match: { "po_detail.v.product": "P1" } },
{ $set: { po_detail: [ "$po_detail" ] } },
{ $set: { po_detail: { $arrayToObject: "$po_detail" } } }
])
有一个 MongoDB 数据库,其中的文档都是这样的:
{
"_id": {
"$oid": "62371a3c8200184f3b49d9e7"
},
"po_id": "123456",
"po_detail": [{
"10065": {
"price": "123.45",
"product": "P1"
}
}, {
"11121": {
"price": "678.90",
"product": "P2"
}
}]
}
我想按“产品”(例如“P1”或“P2”)查找文档,但数组中的键(例如“10065”或“11121”)未知。
如何在MongoDB中查询这样的文档(使用pymongo)?
谢谢!
按“产品”(例如“P1”或“P2”)查找文档不是很清楚。一般来说,数据模型很差,你应该考虑 re-design.
查询可能如下所示:
db.collection.aggregate([
{ $unwind: "$po_detail" },
{
$set: {
po_detail: { $first: { $objectToArray: "$po_detail" } }
}
},
{ $match: { "po_detail.v.product": "P1" } },
{ $set: { po_detail: [ "$po_detail" ] } },
{ $set: { po_detail: { $arrayToObject: "$po_detail" } } }
])