文档大小意味着“发生了parseError”?
所以我有一个集合看起来像:
{ date:"20150730", store:"X", catalogue : [{...}, ..., {...}] // ~3000 items }, { date:"20150807", store:"X", catalogue : [{...}, ..., {...}] // ~3000 items }, { date:"20150807", store:"Y", catalogue : [{...}, ..., {...}] // ~25000 items }
而我打算做的查询是:
collection.findOne({store:_store},{"sort":{'date':-1}}, function(err,doc){ doc && console.log(doc); err && console.log(err); });
我想翻译为“让我最近的文件_store”(第一个问题是我是吗? )
然后,如果我尝试查询商店X,它完美的作品,但在商店Y,它抛出我:
[Error: parseError occured]
更多信息 :
Object.bsonsize(db.ZeCollection.findOne({store:"X"}))
– > 845994
Object.bsonsize(db.ZeCollection.findOne({store:"Y"}))
– > 7351092
所有文档都是有效的JSON
MongoDB的node.js包装是mongojs
(npm install mongojs)
你有什么关于这个问题的线索吗?
这确实是一个问题。
Mongojsclosures连接池,同时检索大量数据。
但好消息是,Mongojs解决了这个问题。
所以我只需要做npm update mongojs
,现在一切正常。
谢谢你们。
我认为这应该是这样(与mongoose),看看sort
和exec
:
collection.findOne({store:_store}).sort({'date':-1}).exec(function (err, doc) { //Do something });
更新 :
所以,在mongojs
你的代码是错误的,你应该有:
collection.findOne({store: _store}).sort({'date':-1}, function (err, doc) { //Do something });
如此处所述: https : //github.com/mafintosh/mongojs#usage
在MongoDB中,您将使用以下查询来恢复商店XXXX的最后date:
db.collection('collection').group({ "key": {"store": true}, "initial": {}, "reduce": function(obj, prev){ prev.max_date = isNaN(prev.max_date) ? obj.date : Math.max(prev.max_date, obj.date); }, "cond": {"store":"XXXXXX"} } )
然后,你可以恢复任何你想要的,因为你已经有了商店和最后的date。 在mongojs中,语法是:
var mongojs = require('mongojs'); var db = mongojs('XXXX/database'); db.collection('collection').group({ "key": {"store": true}, "initial": {}, "reduce": function(obj, prev){ prev.max_date = isNaN(prev.max_date) ? obj.date : Math.max(prev.max_date, obj.date);}, "cond": {"store":"XXXXXX"} }, function (err, docs) { console.log(docs); } )