2017-02-10 87 views
0

我對mongodb的索引有點不清楚。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

這是多一點有關[索引](https://docs.mongodb.com/manual/core/index-single/)和[索引策略(HTTPS: //docs.mongodb.com/manual/applications/indexes/)。如果您正在尋找方法來驗證索引是否被利用,您可以使用https://docs.mongodb.com/manual/tutorial/measure-index-use/ – Veeram

+0

@Veeram感謝'measure index use' doc,I根據我在'explain(「executionStats」)'中看到的內容認爲我的假設是正確的。我認爲你所擁有的是一個完全可以接受的答案。如果你想把它作爲答案,我會接受它。 – Jeff

回答