gpt4 book ai didi

mongodb - 我可以在没有已知字段名称的情况下使用 MongoDB 子文档查询时使用索引吗?

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

我的文档结构如下:

{
"_id": ...,
"name": "Document name",
"properties": {
"prop1": "something",
"2ndprop": "other_prop",
"other3": ["tag1", "tag2"],
}
}

我不知道 properties 子文档中的实际字段名称(它们由应用程序用户提供),所以我无法创建 索引,如 属性.prop1。我也不知道字段值的结构,它们可以是单值、嵌入文档或数组。

是否有任何实用的方法可以使用这种模式设计对集合进行高性能查询?

我想到的一个选择是向文档添​​加一个新字段,为其编制索引并将每个文档使用的字段名称设置到该字段中。

{
"_id": ...,
"name": "Document name",
"properties": {
"prop1": "something",
"2ndprop": "other_prop",
"other3": ["tag1", "tag2"],
},
"property_fields": ["prop1", "2ndprop", "other3"]
}

现在我可以先针对 property_fields 字段运行查询,然后让 MongoDB 扫描找到的文档以查看 properties.prop1 是否包含所需的值。这肯定更慢,但可能是可行的。

最佳答案

处理此问题的一种方法是使用如下模式。

{
"name" : "Document name",
"properties" : [
{
"k" : "prop1",
"v" : "something"
},
{
"k" : "2ndprop",
"v" : "other_prop"
},
{
"k" : "other3",
"v" : "tag1"
},
{
"k" : "other3",
"v" : "tag2"
}
]
}

然后你可以像这样索引“properties.k”和“properties.v”:

db.foo.ensureIndex({"properties.k": 1, "properties.v": 1})

关于mongodb - 我可以在没有已知字段名称的情况下使用 MongoDB 子文档查询时使用索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20218003/

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