我对mongodb
中的索引有点不清楚。
下面我有mongoose
条目的架构(book
)。它有一个owner
和一个requestee
。
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const bookSchema = Schema({
owner : { type: Schema.Types.ObjectId, ref: 'User', index: true },
title : String,
author : String,
image : String,
added : Date,
requestee: { type: Schema.Types.ObjectId, ref: 'User', index: true },
}, {collection: 'books'})
module.exports = mongoose.model("Book", bookSchema);
我想要做的是能够从两个角度进行查询。
对于本书的owner
:
Book.find({owner: ObjectId(user._id)})
这可以告诉我是否有人要求这本书
对于被请求者:
Book.find({requestee: ObjectId(requestee._id)})
这将告诉我被请求者提出的请求。
我不清楚我的上述内容在索引方面是否正确。我可以拥有多个单键索引,还是我正在扫描每个寻找匹配项的文档?
从shell运行查询似乎有效但又不知道这是否正确。
答案 0 :(得分:2)
您可以在查询上运行explain
以查看索引使用情况。如果对您的用例更好,请查看复合索引。
更多信息 - https://docs.mongodb.com/manual/tutorial/measure-index-use/