文档大小意味着“发生了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),看看sortexec

 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); } )