【发布时间】:2016-05-25 20:24:06
【问题描述】:
我的 gameItem 集合中有数千个项目,以以下为例。
{
"weapon name 1":{price:01},
"weapon name 2":{price:100}
}
我在 shell 中运行这样的查询
db.gameItems.find({"weapon name 1":{$exists:1}})
什么都不会返回,但是当我的键没有空格时它可以工作......
第一个问题:有没有办法用空格搜索键值? 第二个问题:我应该把我的数据模型改成这样吗?:
{
weapon:{name: "weapon name 1", price:01}
weapon:{name: "weapon name 2", price:100}
}
然后在武器名称字段中添加索引?这是否提高了每个武器文档中只有 2 个字段的搜索性能?
谢谢
编辑:
抱歉,db collection gameItems 看起来实际上是这样的......
{
last_updated:"2016-04-01",
items:{
"weapon name 1":{price:01},
"weapon name 2":{price:100}
}
}
那么我将如何在项目文档中搜索它们?
【问题讨论】:
-
您建议重塑架构的方式几乎是正确的。价格似乎必须是数字,但 01 似乎不正确。如果您经常按武器名称搜索,添加索引会大大提高性能。
-
这对我来说很好,你确定你查询的是正确的集合吗?在您的陈述中,您暗示您有一个
gameItem集合,但您的查询针对的是gameItems集合? -
我犯了一个错误。我更新了 OP
标签: mongodb