小编Tim*_*imo的帖子

如何使用node.js http服务器从mongodb返回大量行?

我在mongodb中有一个用户数据库,我想通过JSON中的REST接口导出.问题是在最坏的情况下,返回的行数量远远超过200万.

首先我尝试了这个

var mongo = require('mongodb'),
  Server = mongo.Server,
  Db = mongo.Db;
var server = new Server('localhost', 27017, {auto_reconnect: true});
var db = new Db('tracking', server);
var http = require('http');

http.createServer(function (request, response) {
  db.collection('users', function(err, collection) {
    collection.find({}, function(err, cursor){
      cursor.toArray(function(err, items) {
        output = '{"users" : ' + JSON.stringify(items) + '}';

        response.setHeader("Content-Type", "application/json");
        response.end(output);
      });
    });
  });
}).listen(8008);
console.log('Server running at localhost:8008');
Run Code Online (Sandbox Code Playgroud)

内存不足时失败.该示例使用node-mongodb-native驱动程序和基本http包.

致命错误:CALL_AND_RETRY_2分配失败 - 处理内存不足

(请注意,在实际场景中,我使用的参数会根据需要限制结果,但是此示例会查询所有这些最糟糕的情况,无论如何)

数据本身很简单,就像

{"_ id":ObjectId("4f993d1c5656d3320851aadb"),"userid":"80ec39f7-37e2-4b13-b442-6bea57472537","user-agent":"Mozilla/4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR …

rest http bigdata mongodb node.js

17
推荐指数
3
解决办法
1万
查看次数

如何在mongodb-native findAndModify中将变量用作字段名?

在这个使用mongodb-native驱动程序的代码中,我想增加我在单独变量中指定的字段的值.问题是$ inc子句中的字段名称在这种情况下将是"变量",而不是变量的内容.在查询部分中,所选变量按预期工作并找到正确的id.

var selected = 'id_of_the_selected_one';
var variable = 'some_string';
collection.findAndModify(
     {_id : selected}, 
     {},
     {$inc : {variable : 1}},
     {new : true, upsert : true},
     function(err, autoincrement) { /* ... */ }
);
Run Code Online (Sandbox Code Playgroud)

我应该如何做到这样,而不是"变量"这个词会有变量的内容?

javascript mongodb node.js

6
推荐指数
1
解决办法
8789
查看次数

如何使用Solrj获取SolceDocument的Lucene解释?

我正在使用SolrJ搜索Solr索引,并试图获取Lucene的解释,以便将其记录下来以供进一步使用.

代码如下:

    SolrServer server = new CommonsHttpSolrServer("solr_url");
    SolrQuery solrquery = new SolrQuery();
    solrquery.set("fl", "score, id"); // id is a String field
    solrquery.set("rows", "1000");
    solrquery.set("debugQuery", "on");
    solrquery.setQuery("query words here");

    try {
        QueryResponse response = server.query(solrquery);
        SolrDocumentList docs = response.getResults();
        Iterator<SolrDocument> dociterator = docs.iterator();

        while (dociterator.hasNext())
        {
            SolrDocument doc = dociterator.next();
            String id = (String) doc.getFirstValue(idfield);
            Float relevance = (Float) doc.getFirstValue("score");
            String explanation = ???;
        }
    } catch (SolrServerException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我认为response.getEplainMap()将包含一个值为response.getEplainMap().get(id)的映射,但似乎explainmap只包含带有最后找到的文档值的键null.

任何想法如何得到正确的解释?

java lucene solr solrj

5
推荐指数
1
解决办法
4095
查看次数

标签 统计

mongodb ×2

node.js ×2

bigdata ×1

http ×1

java ×1

javascript ×1

lucene ×1

rest ×1

solr ×1

solrj ×1