gpt4 book ai didi

mongodb - Mongo 查找具有未知父键的值

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

我正在 Mongo 表中查找一个值,其中它的父键可能没有描述性名称或已知名称。这是我们的一份文档的示例。

    { 
"assetsId": {
"0": "546cf2f8585ffa451bb68369"
},
"slotTypes": {
"0": { "usage": "json" },
"1": { "usage": "image" }
}
}

我正在查看它是否包含 slotTypes 中的“usage”:“json”,但我不能保证此用法的父键为“0”。

我尝试使用以下查询但没有任何运气:

db.documents.find(
{
slotTypes:
{
$elemMatch:
{
"usage": "json"
}
}
}
)

如果这是一个非常基本的问题,请提前道歉,但我不习惯在 nosql 数据库中工作。

最佳答案

我不确定您是否能够使用当前架构优雅地解决这个问题; slotTypes 应该是一个子文档数组,这将允许您的 $elemMatch 查询工作。现在,它是一个带有数字键的对象。

也就是说,您的文档架构应该类似于:

{
"assetsId": {
"0": "546cf2f8585ffa451bb68369"
},
"slotTypes": [
{ "usage": "json" },
{ "usage": "image" }
]
}

如果更改数据布局不是一个选项,那么您将需要基本上扫描每个文档以找到与 $where 的匹配项。这是缓慢的、不可索引的和笨拙的。

db.objects.find({$where: function() {
for(var key in this.slotTypes) {
if (this.slotTypes[key].usage == "json") return true;
}
return false;
}})

您应该阅读 documentation on $where为了确保您理解它的注意事项,并为了所有神圣的爱,净化您对该功能的输入;这是在您的数据库上下文中执行的实时代码。

关于mongodb - Mongo 查找具有未知父键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026674/

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