2016-05-08 76 views
2

我使用的是MongoDB 2.6.11版本Node.js MongoDB创建多个索引:没有指定索引名

我该如何解决这个错误?在Node.js API reference中,您可以传递的唯一参数是一个索引规范数组和一个回调函数,我的意思是指定索引名称?我使用的代码如下(假设我已经要求mongoclient和我连接到数据库):

db.collection("MyCollection").createIndexes(
    [ 
     {field1: 1}, 
     {field2: 1, field3: 1} 
    ], 
    function(err, result){ 
     //Error handling code 
    } 
); 

错误代码是67和错误的完整堆栈跟踪如下:

MongoError: no index name specified 
    at Function.MongoError.create (/home/ubuntu/workspace/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11) 
    at commandCallback (/home/ubuntu/workspace/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:1154:66) 
    at Callbacks.emit (/home/ubuntu/workspace/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:119:3) 
    at messageHandler (/home/ubuntu/workspace/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:295:23) 
    at Socket.dataHandler (/home/ubuntu/workspace/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:285:22) 
    at emitOne (events.js:77:13) 
    at Socket.emit (events.js:169:7) 
    at readableAddChunk (_stream_readable.js:146:16) 
    at Socket.Readable.push (_stream_readable.js:110:10) 
    at TCP.onread (net.js:529:20) 

我一连接到数据库就运行此命令。如果数据库是新的,那么这个集合将不会存在,任何具有指定字段索引的文档都可能成为问题?

回答

2

您需要指定here所述的索引。

所以你的电话应该是这样的,而不是为每个指标提供了一个独特的名字:

db.collection("MyCollection").createIndexes(
    [ 
     {name: 'field1', key: {field1: 1}}, 
     {name: 'field2_field3', key: {field2: 1, field3: 1}} 
    ], 
    function(err, result){ 
     //Error handling code 
    } 
);