水线需要很长时间才能达到 return 的值
Waterline takes to long to return the value
我们遇到了非常奇怪的问题。我们对 MongoDB 的简单查询需要很长时间才能 return 任何文档。数据库索引良好。我们做了一些测试,这里是:
File.find({sharename: '7iPJUtP2'}, function(err, shares){
console.log(err,shares);
});
console.log 在 60 秒后触发。
然后我们使用.native()方法:
File.native(function(err, collection){
collection.find({sharename: '7iPJUtP2'}, {})
.toArray(function (err, results) {
console.log(err,results);
});
});
此处 console.log 在 103 毫秒后触发。
我们使用的栈是:
- 风帆:0.11.0
- sails-mongo: 0.11.5
- MongoDB: 2.0.1
- 吃水线:0.10.28
有人可以帮助解决这个问题吗?
更新
File.find({sharename: '1'}) 在 50 毫秒内执行。
File.find({sharename: 'a'}) 在 18000 毫秒内执行。
除共享名字段外,文档完全相同。
终于找到问题了。 Mongo 查询生成器使查询看起来像 .find({ sharename: /^qwerty$/i }})
instaed
.find({ sharename: 'qwerty' }})
。它在最新的 MongoDB 版本中运行良好,但对于 mongo 2.0.1,它不使用索引。
我必须直接在 sails-mongo 包中解决这个问题。
我已经创建了 fork,所以如果有人遇到这个问题,你可以使用它。
https://github.com/rparaschak/sails-mongo.git
我们遇到了非常奇怪的问题。我们对 MongoDB 的简单查询需要很长时间才能 return 任何文档。数据库索引良好。我们做了一些测试,这里是:
File.find({sharename: '7iPJUtP2'}, function(err, shares){
console.log(err,shares);
});
console.log 在 60 秒后触发。
然后我们使用.native()方法:
File.native(function(err, collection){
collection.find({sharename: '7iPJUtP2'}, {})
.toArray(function (err, results) {
console.log(err,results);
});
});
此处 console.log 在 103 毫秒后触发。
我们使用的栈是:
- 风帆:0.11.0
- sails-mongo: 0.11.5
- MongoDB: 2.0.1
- 吃水线:0.10.28
有人可以帮助解决这个问题吗?
更新
File.find({sharename: '1'}) 在 50 毫秒内执行。
File.find({sharename: 'a'}) 在 18000 毫秒内执行。
除共享名字段外,文档完全相同。
终于找到问题了。 Mongo 查询生成器使查询看起来像 .find({ sharename: /^qwerty$/i }})
instaed
.find({ sharename: 'qwerty' }})
。它在最新的 MongoDB 版本中运行良好,但对于 mongo 2.0.1,它不使用索引。
我必须直接在 sails-mongo 包中解决这个问题。 我已经创建了 fork,所以如果有人遇到这个问题,你可以使用它。 https://github.com/rparaschak/sails-mongo.git