0

从 MySQL 数据库迁移到 MongoDB,我必须在产品目录中复制此功能:

  1. 每个产品都有多个类别
  2. 每个类别都有产品在每个类别中的名称、id 和位置
  3. 按类别查询产品、按类别位置或价格和标签等其他字段排序时的性能

这是我想出的模型示例

{
   ...
   categories: [
       {
           name: 'Clothing',
           category_id: 1,
           position: 0
       },
       {
           name: 'Bottoms',
           category_id: 2,
           position: 2
       },
       {
           name: 'Jeans',
           category_id: 5,
           position: 0
       }
   ]
}

我应该将名称、category_id 和位置分隔到不同的顶级字段以进行索引吗?

4

1 回答 1

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})
于 2013-09-24T23:06:08.703 回答