gpt4 book ai didi

c# - MongoDB C# 数组索引或索引数组的内部项

转载 作者:可可西里 更新时间:2023-11-01 10:35:45 27 4
gpt4 key购买 nike

我用一个动态数组存储key,value,type在dynamicArray中。 MongoDB/C# 通常使用数组索引,如 db.contents.ensureIndex ( { dynamicArray : 1 } )。存储超过 30 或 40 个元素正在生成大量信息以使用此方法进行索引。存在另一种方法来索引不是完整的数组而是限制索引存储的数组的项目键。类似于 -> 索引键:名称,索引键:城市而不是全部。

dynamicArray:
{
item : { Key: "Name", Value: "Peter", Type:String }
item : { Key: "Age", Value: "18", Type:int }
item : { Key: "City", Value: "San Jose", Type:String }
...30 to 40 items.
}

最佳答案

Something like -> Index key:Name, Index key:City and not all.

你不能专门这样做,你不能索引键的值。

一个解决方案

但是,您可以对数组中的项目进行索引。

假设您的数据如下所示:

items:
[
{ Key: "Name", Value: "Peter", Type:String },
{ Key: "Age", Value: "18", Type:int },
{ Key: "City", Value: "San Jose", Type:String },
...30 to 40 items.
]

您将执行以下操作以在 items.Key 上创建索引:

 db.foo.ensureIndex( { 'items.Key' } )

当您执行以下操作时,您将使用索引:

 db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )

这会将搜索范围缩小到只有那些具有 Key = "City" 的项目。如果这就是全部,那么这可能无济于事。

替代解决方案

为什么 items 是一个数组?你能不能像这样构造数据:

items:
{
"Name" : { Value: "Peter", Type:String },
"Age" : { Value: "18", Type:int },
"City" : { Value: "San Jose", Type:String },
...30 to 40 items.
}

现在您可以在 items.City.Value 上建立索引,这正是您最初要查找的内容。这也使数据结构变得相当小。

根据数据的性质,您可能还想查看 sparse indexes以帮助控制索引的大小。

关于c# - MongoDB C# 数组索引或索引数组的内部项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5078333/

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