【问题标题】:how to search mongoose objects that has date which is nested as key value property, How to search date objects within a range of Date?如何搜索具有嵌套为键值属性的日期的猫鼬对象,如何搜索日期范围内的日期对象?
【发布时间】:2017-06-13 15:04:25
【问题描述】:

所以我试图从 mongo 对象的数组列表中找到一个对象 这就是我正在尝试做的事情...如果您对此问题还有其他问题,请询问我。

这里是 mongo 对象

  {
    "_id": {
      "$oid": "5880ebff8239761bbd8703c0"
    },
    "last_date_email_sent_on": "1/23/17",
    "calls_stack": [],
    "dateAdded": "default",
    "FollowUp_Call_Date": {
      "$date": "2017-01-23T17:02:48.220Z"
    },
    "__v": 1
  }

这是Schema的一部分

  FollowUp_Call_Date: {
    type: Date,
    required: false,
    trim: true
  },

这是我的猫鼬查询来查找/搜索它。

exports.FollowUpSearch = function(req, res, next, id) {

  Property.find({ "FollowUp_Call_Date.$date": {"$gte": new Date(2016, 7, 14) }}).exec(function(err, properties) {  

    if (err) {
      return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
      });
    } else {
      res.jsonp(properties);
    }
  });
};

我试过这个,但它捕获了所有对象,即使它只是附加了属性 FollowUp_Call_Date ,无论它的值是什么。 一些对象的日期为今天,即 2017 年 1 月 27 日,不应使用此查询进行搜索,但确实如此。

  Property.find({ "FollowUp_Call_Date.$date": {"$gte": new Date(2017, 1, 24), "$lt": new Date(2017, 1, 25) }}).exec(function(err, properties) {  

为什么当有下一个对象时它只显示 2 个对象,即具有相同后续日期的 Noemi Rota? (我知道它在那里显示,但它显示另一个 api 调用的原因)

这是这个的查询..

Property.find({ "FollowUp_Call_Date.$date": {"$gte": new Date(2017, 2, 27) }}).exec(function(err, properties) {  

【问题讨论】:

    标签: angularjs node.js mongoose meanjs


    【解决方案1】:

    您确定$date 是嵌套属性吗?据我所知,这是 MongoDB 使用的内部字段。

    你为什么不试试:

    Property.find({ "FollowUp_Call_Date": {"$gte": new Date(2016, 7, 14) }})
    

    【讨论】:

    • 当我备份/导出内容时,我应该告诉你它在 json 文件中的样子。
    • 它显示了所有具有Followup属性的属性。即使对于这个查询....即使我没有任何日期,2017 年 1 月 29 日。 Property.find({ "FollowUp_Call_Date.$date": {"$gte": new Date(2017, 1, 29) } }).exec(function(err, properties) {
    【解决方案2】:

    字段名不能以$ ...开头

    对于嵌入式文档,请检查:

    Property.find({"FollowUp_call_date":{"date":{"$gte": new Date(2017,1,24)}}})
    

    Find more about embedded doc.

    【讨论】:

    • 您是否将字段从“$date”更改为“date”?
    • 是的先生,这是新的查询...... Property.find({ "FollowUp_Call_Date.date": {"$gte": new Date(2017, 1, 27) }}).exec (函数(错误,属性){
    【解决方案3】:

    这行得通。

    Property.find({ "FollowUp_Call_Date": {"$gte": new Date(2017, 0, 27) }}).exec(function(err, properties) {  
    

    【讨论】:

      猜你喜欢
      • 2016-11-19
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多