我们一直在使用
mongodb / nodejs驱动程序几年,目前正在使用最新的驱动程序/ mongodb数据库升级我们的系统.除索引外,一切顺利.
尝试使用collection.ensureIndex函数添加索引时出错.这是我的第一个问题,所以我会尽量详细说明.我没有发现任何相关问题……
这是我们当前的版本:
>节点:v0.10.33
> Mongodb驱动程序:v2.0.5
> Mongodb数据库:v2.4.12
这是一个测试样本:
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect('mongodb://localhost:28888/test', function(err, db) {
var collection = db.collection('ensureIndexEmbedded');
// Create an index on the a field
collection.ensureIndex( {"a.c":1}
, {background:true, w:1}, function(err, indexName) {
console.log(err);
//test.equal(null,err);
db.close();
});
});
以及运行测试的结果:
$node testindex.js
js-bson: Failed to load c++ bson extension, using pure JS version
{ [MongoError: n/a]
name: 'MongoError',
message: 'n/a',
ok: 1,
n: 1,
code: 14,
errmsg: 'key a.c must not contain \'.\'',
writeErrors: [ { index: 0, code: 14, errmsg: 'key a.c must not contain \'.\'' } ] }
是否有可能警告js-bson:无法加载c bson扩展名与此问题相关联?或者用于创建索引的语法有什么问题吗?
任何帮助将非常感谢!
最佳答案 如果有人仍然感兴趣.问题在于分配给索引的默认名称.由于它是由字段名称构造的,因此它包含一个点.您可以简单地明确命名索引.只需将“name”字段添加到ensureIndex函数调用的options参数中,它应该没问题.