gpt4 book ai didi

如果所有键都作为字段存在,则 MongoDB 过滤器

转载 作者:可可西里 更新时间:2023-11-01 10:04:18 24 4
gpt4 key购买 nike

我想过滤所有键(以列表格式存在)作为字段存在的文档。我可以使用字段作为键之一一个接一个地查询多次

{ field: { $exists: <boolean> } }

不过这样好像效率不是特别高。我也担心速度。即使一些键被索引,它本质上是线性搜索吗?

此外,是否有一个简单的语法来查询是否有任何键作为字段存在?

编辑:

举个例子,假设 keys = ['key1','key2','key3']。现在,我想过滤所有包含“key1”、“key2”和“key3”字段的文档。

最佳答案

你在这里真正的意思是$all运算符(operator):

db.collection.find({ "keys": { "$all": ["key1","key2","key3"] } });

它查找将包含数组中“所有”元素(例如“keys”)的文档。

$exists您指向的运算符实际上是为了查看给定的键值是否实际存在于文档中,例如:

{ "key": "something" }

所以 $exists在上下文中将是:

db.collection.find({ "key": { "$exists": true } })

意味着该字段实际上存在。

所以如果你想像这样匹配文档的“键”:

{
"key1": "",
"key2": "",
"key3": ""
}

然后您将在您的查询中列出所有这些:

db.collection.find({
"key1": { "$exists": true },
"key2": { "$exists": true },
"key3": { "$exists": true }
})

事情就是这样。

关于如果所有键都作为字段存在,则 MongoDB 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24143652/

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