背景:本周我刚刚学习了数据库和mongo的基础知识。
我有一个名为“ orderstest”的10K文档,其基本格式如下:
{
"_id": {
"$oid": "2309823082039482"
},
"Order": "12345678920000",
"Client": "Client Name Inc.",
"OrderUId": "3452-2342-9393-0100",
"OrderItems": [
{
"Client": "Client Name Inc.",
"Details": [
{
"Key": "EnterpriseCode",
"Value": "XYZ1000"
},
{
"Key": "AWSRegion",
"Value": "Frankfurt"
},
],
"ProductUId": "A90",
"OrderItemUId": "ABC1000",
}
],
"__v": 0
}
我必须创建一个python3脚本来将这些条目与一些AWS信息进行比较。 我要做的第一件事是获取与ProductUId匹配的所有文档 “ A90”或“ B90”。
我在mongo shell中运行了此查询,它起作用了:
db.orderstest.find({
OrderItems:{$elemMatch: {
ProductUId:"A90"
}
}
})
但是当我尝试将其放入脚本时,它会引发以下错误:
'OrderItems':{'$elemMatch': {
^
SyntaxError: invalid character in identifier
此外,我需要创建所有“ A90”或“ B90”的条件,这些条件是通过阅读 文档,并尝试调整一些我无法实现的功能。我还应该指出,我已经阅读了MongoDB文档几个小时,但是由于我对DB的空缺经验,对我来说这绝对没有意义。
答案 0 :(得分:0)
对于“ 我要做的第一件事是获取其ProductUId匹配“ A90”或“ B90”的所有文档。”
.find({"OrderItems.ProductUId": {"$in":["A90","B90"]}})
会工作。不确定为什么要使用$ elemMatch,似乎没有必要吗?