来自mongodb doc:
基本上为子文档创建索引包括写"address.city"
之类的内容
到目前为止,我不能这样做。
我试过了:
index = "category.code";
index = { "category.code": 1 };
index = { "category": {code: 1} };
collection.ensureIndex( index, {unique: true, w: 1}, function(error, data){
console.log(error ? error : documentName + ': [ensureIndex] ' + JSON.stringify(data));
});
但没有创建索引。
还有其他解决方案吗?
当我从命令行通过mongo
执行此操作时。
db.type.ensureIndex({'category.code':1})
但是当我从JS脚本运行它时,它没有。
var mongodb = require('mongodb');
exports.up = function(db, next){
var documentName = 'type';
var collection = mongodb.Collection(db, documentName);
...
答案 0 :(得分:5)
此代码在NodeJS中按预期工作:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test", function (err, db) {
db.collection("test").ensureIndex({ "category.code": 1 },
function(err, result) {
db.close();
});
});
显示集合的索引:
> use test
switched to db test
> db.test.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "test.test",
"name" : "_id_"
}
]
> db.test.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "test.test",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"category.code" : 1
},
"ns" : "test.test",
"name" : "category.code_1"
}
]