我有一个超过31,000个文档的集合,我想从我的Java HTTP
(我使用服务)调用中为每个调用检索x个文档:
public void sendGet()throws Exception{
//using find service to get all nodes
String url = "service url"; // "http:....."
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", userAgent);
//200 -OK
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
IterationForDocuments+=100; // set to 0;
}
对于每个电话,我想获得文档[1-100],对于下一个电话,我想得到[101-200],依此类推,直到结束。
我的问题是:1 - 在cache
中有data-types
100个doc的好方法。 2-我应该在哪里放置索引跟踪服务(mongo)或java类?
这是我使用的mongo查询:
module.exports = function (app, options) {
var mongoFind = {
events: mongoFindEvents,
find: function (req, res) {
var name = "node"
var query = {};
query = req.query;
var Collection = getCollection(name);
Collection.find(query).toArray(function(err, docs) {
res.send(docs);
});
}
};
谢谢!
答案 0 :(得分:1)
您未在此代码段中显示实际查询MongoDb的方式,但您需要做的是为您要检索的文档集发送查询参数。然后在实际查询MongoDb的代码中,您需要使用limit
和skip
运算符来提取正确的数据。所以你的HTTP请求对象看起来像(以JSON格式):
{
User-Agent: <user-agent>
Skip: ### //ie 100, 200, 300, etc
Limit: ### //Sounds like you always want this to be 100
}
然后在你的查询中(再次,你没有显示实际查询Mongo的代码,所以我只是在Mongo shell中看到它):
db.collection.find(<query>).skip(request.skip).limit(request.limit)