PM2/NodeJS API 有 mongoDB 索引问题
PM2/NodeJS API with mongoDB index problems
我正在尝试部署多个 NodeJS
rest APIs 使用 PM2
,这些 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 数据库。
谢谢
检查您在哪个字段上定义了文本索引。现在 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'
...
});
我正在尝试部署多个 NodeJS
rest APIs 使用 PM2
,这些 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 数据库。
谢谢
检查您在哪个字段上定义了文本索引。现在 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'
...
});