创建一个带索引的集合
create a collection with an index
我想创建一个具有唯一索引的集合。
我曾经认为在我的应用程序启动时这样做就足够了-
db.collection('myCollection', {strict: true}, function (err, collection) {
if (!err)
{
collection.ensureIndex({ "name" : 1},{unique: true}, function dummy(result,err){});
}
});
``
然而,当应用程序是第一个 运行 时,'myCollection' 集合不存在,所以我的 'ensureIndex' 没有被调用(回调返回错误) .这意味着我的索引没有按预期创建。
我看到您可以使用 createCollection()
功能,但据我所知,这不是标准做法。
确保在插入第一个文档时我的索引已经就位的最佳做法是什么?
从您的 db.collection
调用中删除 {strict: true}
选项;这就是导致它 return 在集合不存在的情况下回调错误的原因(这是该选项的唯一目的)。
db.collection('myCollection', function (err, collection) {
if (!err)
{
collection.ensureIndex({"name": 1},
{unique: true},
function dummy(result,err){});
}
});
我想创建一个具有唯一索引的集合。
我曾经认为在我的应用程序启动时这样做就足够了-
db.collection('myCollection', {strict: true}, function (err, collection) {
if (!err)
{
collection.ensureIndex({ "name" : 1},{unique: true}, function dummy(result,err){});
}
});
``
然而,当应用程序是第一个 运行 时,'myCollection' 集合不存在,所以我的 'ensureIndex' 没有被调用(回调返回错误) .这意味着我的索引没有按预期创建。
我看到您可以使用 createCollection()
功能,但据我所知,这不是标准做法。
确保在插入第一个文档时我的索引已经就位的最佳做法是什么?
从您的 db.collection
调用中删除 {strict: true}
选项;这就是导致它 return 在集合不存在的情况下回调错误的原因(这是该选项的唯一目的)。
db.collection('myCollection', function (err, collection) {
if (!err)
{
collection.ensureIndex({"name": 1},
{unique: true},
function dummy(result,err){});
}
});