Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 获取特定日期范围内具有指定属性的所有记录_Mongodb_Date_Mongoose - Fatal编程技术网

Mongodb 获取特定日期范围内具有指定属性的所有记录

Mongodb 获取特定日期范围内具有指定属性的所有记录,mongodb,date,mongoose,Mongodb,Date,Mongoose,我正在传入两个日期,格式为MM-DD-YYYY,这是一个日期范围。我需要查询该范围内的所有记录,并包括指定的字段。我运气不好 Mongo中记录的一部分: { "_id": "some ID", "date": { "$date": "2015-06-26T13:02:12.121Z" }, 查询: var Start = '09-07-2015' var End = '09-14-2015' 如果我这样做: var query = Orde

我正在传入两个日期,格式为
MM-DD-YYYY
,这是一个日期范围。我需要查询该范围内的所有记录,并包括指定的字段。我运气不好

Mongo中记录的一部分:

{
    "_id": "some ID",
    "date": {
        "$date": "2015-06-26T13:02:12.121Z"
    },
查询:

var Start = '09-07-2015' 

var End = '09-14-2015'
如果我这样做:

    var query = Order.find({
        date : {
            $lt : End,
            $gt : Start
        }
    });
我在预期的一周范围内得到了完整的文档。但是,我希望指定要返回的字段,而不是完整文档。因此,我尝试使用分组和项目来指定这些字段:

    var query = Order.aggregate(
        {
            $match :
            {
                date: {
                    $gte: start,
                    $lt: end
                }
            },
            $group:
            {
                cust_ID: '$request.headers.customer_id',
                wholesaler_ID: '$request.headers.wholesalerID'
            }
        }
    );
同样,我也尝试过使用project来获得我想要的结果。我想它可能与日期字符串不匹配,比如
09-07-2015
,所以我直接包含了ISO日期。还是没有运气。。。查询返回时未定义或为空:

    var query = Order.aggregate(
        {
            $project:
            {
                date: 'date',
                cust_ID: '$request.headers.custID',
                wholesaler_ID: '$request.headers.wholesalerID'
            }
        },
        {
            $match :
            {
                date: {
                    $gte: "2014-12-09T21:02:56.872Z",
                    $lt: "2015-12-09T21:02:56.872Z"
                }
            }
        }
    );
这会奏效的

我刚刚用Robomongo测试过这个

db.getCollection('offerdb').find({time_posted:{$gt: '2015-10-21T21:40:04+05:30', $lte:'2015-12-14T05:53:14+05:30'}},{_id:1, merchant_id:1})

对我来说很有魅力

在mongo shell中尝试此命令

use dbname

db.collection_name.find({date: {$gte: ISODate('2015-09-07 00:00:00'), $lte: ISODate('2015-09-14 23:59:59.999999')}},{'cust_ID':1,'_id':0,'wholeseller_ID':1})

谢谢这似乎不起作用。我不认为语法是正确的,我已经发布了shell代码,我已经测试过了,请检查它。可能我没有正确地编辑代码。我编辑了代码,一个括号没有正确排序。现在运行它。
use dbname

db.collection_name.find({date: {$gte: ISODate('2015-09-07 00:00:00'), $lte: ISODate('2015-09-14 23:59:59.999999')}},{'cust_ID':1,'_id':0,'wholeseller_ID':1})