每次数据库连接时都应该调用createIndex()函数,如教程http://mongodb.github.io/node-mongodb-native/2.1/tutorials/geospatial-search/中给出的那样 如果使用地理空间索引,我是否每次都需要调用该函数?
答案 0 :(得分:1)
根据docs:
如果同一规范的索引尚不存在,则createIndex()方法仅创建索引。
这也适用于地理空间索引。
关于在何处执行此操作,因为您只需要执行一次,因此通常不必在应用服务器代码中包含此操作。
我可以想到关于如何执行它的两个选项:
createIndex()
关于何时执行此操作,可以随时创建索引,但建议在将数据插入该集合之前执行此操作。
答案 1 :(得分:0)
例如,在我与mongoDBClient建立连接之后,我像这样呼叫createIndex()
:
private connectionManager: MongoClient;
public connect(): Promise<void| string> {
return this.mongoClient.connect()
.then((mongoClient: MongoClient) => this.connectionManager = mongoClient)
.then(() => this.setupDBIndexes())
.catch((e: Error) => console.log('Could not connect to mongo server: ' + e));
}
private setupDBIndexes() {
return this.connectionManager.db('users').collection('list').createIndex( {"email": 1} as Object, {unique: true})
}
在应用程序的生命周期开始时调用 connect()
。我很好奇,如果这也是一个选择,或者有更好的选择。至少我在想,似乎在每个插入操作上都调用createIndex()
确实错误。