【问题标题】:get Date with query result in mongodb node.js在 mongodb node.js 中获取带有查询结果的日期
【发布时间】:2015-08-18 06:48:18
【问题描述】:

我有疑问 -

 var chat = db.collection('chat');
    chat.find({"chat_id":req.params.id}).toArray(function(err,data){
        if(err){
            throw err;
        }
        else {
            console.log(data)
        }
    });

结果——

[{ _id: 55cb78a0ebfead4f78d6135b,
    username: 'tester',
 } ]

我在查询中修改的内容是我以这种格式获取结果 --

[{ _id: 55cb78a0ebfead4f78d6135b,
    username: 'tester',
    created_date: ISODate("2011-09-07T08:37:37Z")
 } ]

请提前告诉我谢谢。

【问题讨论】:

  • 集合中有created_date 字段吗?
  • 不,我没有 created_date 在集合中,但我们通过此函数 getTimestamp() 的对象 ID 获取创建日期;这不会包含在结果中
  • 我无法理解,如果你没有这些数据,你怎么能找回它?
  • 请向我们展示您的收藏模型
  • [{ _id: 55cb78a0ebfead4f78d6135b, username: 'tester' } ] 我们通过此函数获取创建日期 getTimestamp() 我想查询结果中包含此日期的日期

标签: javascript node.js mongodb


【解决方案1】:

您正在寻找 JavaScript 的 .map() 函数。这可以改变您的数组结果。

var chat = db.collection('chat');
chat.find({"chat_id":req.params.id}).toArray(function(err,data){
    if(err){
        throw err;
    }
    else {
        data = data.map(function(item) {
            item.created_date = item._id.getTimestamp();
            return item;
         });
        console.log(data);
    }
});

请注意,此处的 Date 仅精确到“秒”,因为 ObjectId 中的“时间戳”仅精确到该值。

如果实际上您的数据是作为字符串而不是 ObjectID 存储的,则首先对其进行转换:

var mongodb = require("mongodb"),
    ObjectID = mongodb.ObjectID;



var chat = db.collection('chat');
chat.find({"chat_id":req.params.id}).toArray(function(err,data){
    if(err){
        throw err;
    }
    else {
        data = data.map(function(item) {
            item.created_date = new ObjectID(item._id).getTimestamp();
            return item;
         });
        console.log(data);
    }
});

【讨论】:

  • @Vipul 不知道它没有的节点本机 Mongodb 驱动程序。您实际上使用的是哪个驱动程序?或者你的ObjectId实际上是一个字符串?
  • 我正在使用 mongodb 驱动程序,没有它的对象 ID
  • @Vipul 我也是,看来您的 _id 字段实际上是字符串。
  • @Vipul 你真的应该解决这个问题。正确的投射如上所示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 2023-04-02
  • 2017-07-11
  • 2013-04-16
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多