我正在尝试使用NodeJS
在同一Ubuntu VPS中部署多个PM2
rest API ,这些API用于提供来自不同MongoDB
的数据同一本地托管数据库服务器中的数据库。
我确实遇到了一些端口问题,但是我确实在每个应用程序中都进行了更改以解决该问题。之后,出现奇怪的mongoDB
错误。
API listen on port 3001
Connected!
MongoError: Index with pattern: { _fts: "text", _ftsx: 1 } already exists with different options
at /var/app/my-project/node_modules/mongodb-core/lib/connection/pool.js:593:63
at authenticateStragglers (/var/app/my-project/node_modules/mongodb-core/lib/connection/pool.js:516:16)
at Connection.messageHandler (/var/app/my-project/node_modules/mongodb-core/lib/connection/pool.js:552:5)
at emitMessageHandler (/var/app/my-project/node_modules/mongodb-core/lib/connection/connection.js:309:10)
at Socket.<anonymous> (/var/app/my-project/node_modules/mongodb-core/lib/connection/connection.js:452:17)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at TCP.onread (net.js:597:20)
现在,API会继续重新启动并降低整个系统的速度。请有人指导我扔了这个,请注意,我只是在维护应用程序。我不是开发人员,并且对mongo数据库不太熟悉。
谢谢
答案 0 :(得分:2)
检查您定义了文本索引的字段。现在,mongodb每个集合只允许一个文本索引
db.collection.getIndexes()
您会得到类似的东西
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "desc_text",
"ns" : "some.ns",
"weights" : {
"title" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 2
}
现在,如果您还想在其他列中使用该索引,只需删除该索引
db.collection.dropIndex('desc_text');
,然后通过包含要包含在文本索引中的所有列来重新创建它,
db.collection.createIndex({
title:'text'
...
});