gpt4 book ai didi

python - MongoDB 搜索集合中列表中的每个字典

转载 作者:可可西里 更新时间:2023-11-01 09:59:08 25 4
gpt4 key购买 nike

我有一个 collection 包含 dictslist 我想搜索是否有任何字典包含两个特定的 key:values

例如,我想find_one,其中字典包含特定的名字和姓氏。这是我的收藏:

{
"names": [
{
"firstName": "bob",
"lastName": "jones",
"age": "34",
"gender": "m"
},
{
"firstName": "alice",
"lastName": "smith",
"age": "56",
"gender": "f"
},
{
"firstName": "bob",
"lastName": "smith",
"age": "19",
"gender": "m"
},
]
}

我想看看是否有以 bob smith 作为名字和姓氏的记录,我正在搜索:

first = 'bob'
last = 'smith'

nameExists = db.user.find_one({'$and':[{'names.firstName':first,'names.lastName':last}]})

此查询会检索 bob smith 的一条记录吗?

最佳答案

虽然提到确实是 $and运算符不是必需的,无论哪种形式,这都不是您想要的查询。请考虑以下事项:

db.user.find_one({ 'names.firstName': 'alice','names.lastName': 'jones' })

这实际上确实匹配给定的记录,因为“firstName”的值等于“alice”且“lastName”的值等于“jones”。但是当然这里的问题很简单,因为数组中没有实际元素具有这两个值的子文档。

为了匹配数组元素包含“两个”给定条件的位置,您需要使用 $elemMatch运算符(operator)。这会将查询条件应用于数组的“元素”。

db.user.find_one({ 
'names': { '$elemMatch': { 'firstName': 'alice','lastName': 'smith' }
})

当然,如果您尝试“alice”和“jones”,那么它们将不匹配,因为实际上没有元素包含该操作。

关于python - MongoDB 搜索集合中列表中的每个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261759/

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