【问题标题】:Understanding mongodb find query more了解 mongodb find 查询更多
【发布时间】:2015-09-25 23:57:41
【问题描述】:

关于以下 mongodb 查询的快速问题:

var queryParams = {
        $or: [
            {'stats.created_by': userId},
            {'user_list.user_id': userId},
            {'invite_list.user_id': userId},
            {'invite_list.email': userEmail}
        ],
        deleted: false
    };

这个查询被赋予一个 ItemModel.find(queryParams); - 我想在这里了解表扫描的影响?我的理解是它会根据删除的属性进行全面扫描,然后过滤 $or 子句。

好的,我运行了以下说明,所有项目都被扫描并带有已删除的索引。

db.items.find({$or: [
            {'stats.created_by': '559cd76338e42c533a83b8a7'},
            {'user_list.user_id': '559cd76338e42c533a83b8a7'},
            {'invite_list.user_id': '559cd76338e42c533a83b8a7'},
            {'invite_list.email': 'some@something.com'}
        ],
        deleted: false}).explain();

我可以在这里做些改进吗?

谢谢。

J

【问题讨论】:

  • 您本可以将询问此问题的时间用于检查explain() 输出。

标签: mongodb indexing mongoose database


【解决方案1】:

db.getCollection('items').createIndex({ deleted: 1 });加快查询速度并忽略 $or 因为这只是结果集的过滤器。可能会考虑使查询更具限制性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多