MongoDB MongoEngine索引声明

MongoDB MongoEngine索引声明,mongodb,mongoengine,Mongodb,Mongoengine,我有文件 class Store(Document): store_id = IntField(required=True) items = ListField(ReferenceField(Item, required=True)) meta = { 'indexes': [ { 'fields': ['campaign_id'], 'unique': True

我有文件

class Store(Document):
    store_id = IntField(required=True)
    items = ListField(ReferenceField(Item, required=True))
    meta = {
        'indexes': [
            {
                'fields': ['campaign_id'],
                'unique': True
            },
            {
               'fields': ['items']
            }
        ]
    }

要在项目中设置索引并存储\u id,我的配置正确吗?

您的第二个索引声明看起来应该满足您的要求。但是为了确保索引确实有效,您应该使用。使用mongo shell连接到您的数据库,并执行查找查询,该查询应使用该索引,后跟
.explain()
。例如:

db.yourCollection.find({items:"someItem"}).explain();
输出将是一个包含许多字段的文档。解释每个字段的确切含义。请特别注意以下领域:

  • millis所需查询的时间(毫秒)
  • 间接地(自我解释)
  • n返回的文档数
  • nscannedObjects必须在不使用索引的情况下检查的对象数量。对于仅索引查询,该值应等于n。如果该值较高,则意味着某些文档无法被索引排除,必须手动扫描
并不是真正的自我解释:它表示一个覆盖查询。在这种特殊情况下,查询中的所有字段和结果中的所有字段都是同一索引的一部分。