从MySQL数据库迁移到MongoDB,我必须在产品目录中复制此功能:
这是我提出的模型的一个例子
{
...
categories: [
{
name: 'Clothing',
category_id: 1,
position: 0
},
{
name: 'Bottoms',
category_id: 2,
position: 2
},
{
name: 'Jeans',
category_id: 5,
position: 0
}
]
}
我应该将name,category_id和position分隔到不同的顶级字段中进行索引吗?
答案 0 :(得分:2)
提供您的文档示例似乎无法通过此类别位置进行有效索引来按类别执行搜索
当然,您可以索引“位置”,“名称”并运行查询
db.coll.find({"categories.name": "Jeans"}).sort({"categories.position": -1})
但是根据所需的类别进行排序是不合适的。
我建议有文件部分:
{
...
"categories": ["Clothing", "Bottoms", "Jeans"],
"positions": {
"Clothing": 0,
"Bottoms": 2,
"Jeans": 0
}
}
然后您就可以运行查询
db.coll.find({categories: "Jeans"}).sort({"positions.Jeans": -1})