为什么嵌套对象的查询不起作用?

时间:2015-10-23 17:59:45

标签: mongodb mongoose

鉴于此Job对象结构,其中users是一组用户文档:

{
    _id: "56228b5ba851623018f88ff7",
    created: "2015-10-17T17:54:35.475Z",
    active: true,
    workOrders: [{
       startDate: "2015-10-18T05:00:00.000Z",
       name: "Test1",
       users: [{...}]
    },{
      startDate: "2015-10-20T05:00:00.000Z",
      name: "Test2",
      users: [{...}]
    }]
}

为什么此查询有效:

  Job.find({
    'workOrders.users._id' : userId,
    'created' : { '$gte' : new Date('10/17/2015'), '$lt': new Date('10/25/2015')},
    'active' : true
  }).exec(cb);

但是这个没有:

  Job.find({
    'workOrders.users._id' : userId,
    'workOrders.startDate' : { '$gte' : new Date('10/20/2015'), '$lt': new Date('10/25/2015')},
    'active' : true
  }).exec(cb);

最初的想法是workOrder.startDate不是日期类型,但它是。

有什么理由我不能这样查询嵌套的workOrder对象吗?我很困惑为什么我可以查询created文档上的Job日期属性,我可以在user数组中查询嵌套的workOrders文档数组,但后来最后一个查询无效。

注意,没有抛出错误,它只返回没有结果。即使我将日期范围扩大到绝对包括所有日期,例如01/01/2000到2016年1月1日,我什么都没得到。

1 个答案:

答案 0 :(得分:0)

您可以将startDate替换为:

created: {
        type: Date,
        default: Date.now
    },

...确定您是否可以向文档添加多个日期,以及startDate代码是否不正确?