我在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 …
在这个使用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)
我应该如何做到这样,而不是"变量"这个词会有变量的内容?
我正在使用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.
任何想法如何得到正确的解释?