我正在尝试使用MongoDB进行分页,而不使用skip();
在mongo shell中,我的查询获得了以下结果,但在Javascript中为空[];
我认为我在做ObjectID错误,我使用" mongodb ObjectID"和" mongojs"带有Node.js的库。
Mongo shell:
db.chat.find({
_id: { $lt: ObjectId("53e901c125c68270311e5f41") },
user_id: 1,
target_user_id: 1,
"$or": [{user_id: 1, target_user_id:1}]
}).sort({
ts: -1
}).limit(5);
输出:
{ "_id" : ObjectId("53e88e1bb76e781413000029"), "user_id" : 1, "target_user_id" : 1, "message" : "Hey" }
{ "_id" : ObjectId("53e88f51b76e78141300002a"), "user_id" : 1, "target_user_id" : 1, "message" : "Hey" }
//ect.
的Javascript
var ObjectID = require('mongodb').ObjectID;
var db = require("mongojs").connect(db_uri, db_collections);
//last_ts = "53e901c125c68270311e5f41"
var last_id = ObjectID.createFromHexString(last_ts);
db.chat.find({
_id: { $lt: last_id },
user_id: 1,
target_user_id: 1,
"$or": [{user_id: 1, target_user_id:1}]
}).sort({
ts: -1
}).limit(5).toArray(function (err, docs) {
console.log("docs:"+docs); //"docs" - no result
console.log("err:"+err); //"err:null"
if(docs != null){
console.log(JSON.stringify(docs)); //"docs:[]"
}
});
如何用JS中的查询获得相同的结果?
使用文档中的$ oid修改:
http://docs.mongodb.org/manual/reference/mongodb-extended-json/#oid
仍然没有工作..
var last_ts = "53e901c125c68270311e5f41";
db.chat.find({_id: {$lt: {"$oid": last_ts}}, user_id:1, target_user_id:1, "$or": [{user_id: 1, target_user_id:1}]}).sort({ts: -1}).limit(5)
修改 现在简单地用作:
var last_ts = "53e901c125c68270311e5f41";
new ObjectID(last_ts)
答案 0 :(得分:0)
如果我没弄错,你只需将ObjectID字符串传递给mongo查询:
db.chat.find({
_id: { $lt: last_ts},
user_id: 1,
target_user_id: 1,
"$or": [{user_id: 1, target_user_id:1}]
})
...