【问题标题】:MongoDB ObjectID in JSJS中的MongoDB ObjectID
【发布时间】:2014-10-07 04:45:17
【问题描述】:

我正在尝试在没有 skip() 的情况下使用 MongoDB 进行分页;

在 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)

【问题讨论】:

    标签: javascript node.js mongodb mongojs


    【解决方案1】:

    如果我没记错的话,您可以简单地将 ObjectID 字符串传递给 mongo 查询:

    db.chat.find({
        _id: { $lt: last_ts},
        user_id: 1,
        target_user_id: 1,
        "$or": [{user_id: 1, target_user_id:1}]
    })
    ...
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多