gpt4 book ai didi

python - Pymongo 使用投影运算符查找

转载 作者:行者123 更新时间:2023-11-30 22:21:40 25 4
gpt4 key购买 nike

我有一个嵌套的 mongodb 数据库,我正在尝试执行一个查找条目并仅返回某些字段的查询。

我想要返回的字段是嵌套的

数据库看起来像这样

 {
'material_type':'solid',
'performance':10,
'material': {'isotopes': [ { 'abundance': 0.9,
'atomic_number': 6,
},
{ 'abundance': 0.1,
'atomic_number': 7,
}
]
},
},
{
'material_type':'solid',
'performance':9,
'material': {'isotopes': [ { 'abundance': 0.7,
'atomic_number': 6,
},
{ 'abundance': 0.3,
'atomic_number': 7,
}
]
}
}

我想返回嵌套的丰度字段,但如果原子序数等于 6。

我尝试对查询执行投影,目前 python pymongo 中有类似的东西

 results = database.find({'material_type':'solid'},
{'performance':True,
'material.isotopes':True
})

我认为我需要投影操作,但无法让它们在 pymongo 中工作。您知道 pymongo database.find 操作应该返回以下字段和值吗?

  performance , abundance 
10 0.9
9 0.7

最佳答案

当使用projection时您需要使用 10而不是TrueFalse分别。

试试这个:

find( {'material_type':'solid', 
'material.isotopes.atomic_number' : {'$eq': 6 }
},
{'_id' : 0, 'performance' : 1,
'material.isotopes.atomic_number.$' : 1 } )

返回:

{
"performance" : 10.0,
"material" : {
"isotopes" : [
{
"abundance" : 0.9,
"atomic_number" : 6.0
}
]
}
}

/* 2 */
{
"performance" : 9.0,
"material" : {
"isotopes" : [
{
"abundance" : 0.7,
"atomic_number" : 6.0
}
]
}
}

您使用$projection当您只需要选定文档中的一个特定数组元素时。你可以尝试$elemMatch如果你的数组没有嵌套。

然后您可以将结果放入 list 中然后选择要打印的两个元素:

results = list( db.collection_name.find(
{'material_type':'solid',
'material.isotopes.atomic_number' : {'$eq': 6 }},
{'performance':1,
'material.isotopes.atomic_number.$':1 }
))

我正在运行 pymongo 3.6.0 和 mongodb v3.6

关于python - Pymongo 使用投影运算符查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48599251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com