Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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_Mongoose - Fatal编程技术网

Mongodb 猫鼬:按特定月份查找

Mongodb 猫鼬:按特定月份查找,mongodb,mongoose,Mongodb,Mongoose,我的数据库中有此模型: { "title" : { type: String } , "date" : { type: Date , default: Date.now } } 文档示例为: { "_id": "5aa2d0f9e10fed2054fe1138", "title": "Hello World", "date": "2018-03-09T03:00:00.000Z" }

我的数据库中有此模型:

{
    "title" : {
        type: String
    }
    , "date" : {
        type: Date
        , default: Date.now
    }
}
文档示例为:

{
     "_id": "5aa2d0f9e10fed2054fe1138",
     "title": "Hello World",
     "date": "2018-03-09T03:00:00.000Z"
}
我只想获取所有日期为特定月份的文档,即:3,表示三月。不管是哪一天/哪一年

我找到了一些聚合答案,但在所有这些答案中,我都必须创建一个日期,其中至少有一年可以添加到$gte,但我不想这样做

还有别的办法吗

MongoDB版本:3.4.7


谢谢。

您的聚合应该如下所示: 假设您将月份传递给查询

connection.model("myModel").aggregate([
{
   $facet: {
      monthly: [
                    {
                        $project: {
                            month: { $month: "$date" }

                        }
                    },
                    { $match: { month } },

                ],
   }
}
])
您应该会收到根据结果筛选的元素数组

查看文档


聚合框架非常好,您应该检查一下,希望这能解决问题。我还想知道如何在比赛阶段使用$month。我认为这是一个部分的答案。 V3.6

V3.4


您使用的是哪个版本的mongodb?您的日期是数据类型date?是吗?发布一些示例数据集聚合操作仅适用于mongoDB的新版本,了解version@Ricardo谢谢你回答我。我已经用3.4.7版本更新了描述,@Krishna感谢回答我。我已经用版本3.4.7更新了描述,日期的数据类型是date.Perfect。我在想我怎么能用猫鼬来编页码。我搜索了一些插件,但没有一个能同时完成这两个任务。今天我在用。你知道我怎么做吗?我是个.NET的人(@Krishna你能帮我吗谢谢你@Ricardo,我在想我怎么能用mongoose给它编页码。我搜索了一些插件,但没有一个能做到这两个。今天我正在使用。你知道我怎么做吗?
db.test.aggregate([
      {$addFields: {  "month" : {$month: '$date'}}},
      {$match: { month: 3}}
    ]);
db.test.aggregate([
  {$project: { title:1, date:1, "month" : {$month: '$date'}}},
  {$match: { month: 3}}
]);