【问题标题】:MongoDB get previous one year record from today Including null datesMongoDB 从今天开始获取前一年的记录包括空日期
【发布时间】:2020-08-22 15:19:45
【问题描述】:

无法从今天开始检索前一年记录的列表,包括联系人集合中节点 MongoDB 中的空日期。

Sample Collection:
{
   "_id" : ObjectId("5cb6a9ee8f145b97daf7181b"),
   "Name" : "David",
   "Age" : "25",
   "JoiningDate" : 2019-06-01T06:18:22.359+00:00
}
{
   "_id" : ObjectId("5cb3a9ee8f1d1b75daf7181b"),
   "Name" : "Smith",
   "Age" : "28",
   "JoiningDate" : 2019-12-01T06:35:22.865+00:00
}
{
   "_id" : ObjectId("5cb3r4ee8f1d1b75daf7181b"),
   "Name" : "Peter",
   "Age" : "23",
   "JoiningDate" : null
}
{
   "_id" : ObjectId("5cb4w7ee8f1d1b75daf7181b"),
   "Name" : "Maria",
   "Age" : "23"
}
{
   "_id" : ObjectId("5cb9a9ee8f1d1b24daf7181b"),
   "Name" : "Alicia",
   "Age" : "24",
   "JoiningDate" : 2018-06-01T06:18:22.109+00:00
}

我的代码是:

var collection = db.collection('Contacts');
var fromDate = new Date(Date.now() - 365*24*60*60 * 1000);
var data = collection.find({ $or: [{"JoiningDate":{$gt: fromDate}}, {"JoiningDate":{$eq: ''}} ]} );

我做错了什么,请纠正我!

【问题讨论】:

  • 更新条件为db.getCollection('test').find({ $or: [{"JoiningDate":{$gt:fromDate}}, {"JoiningDate":{$eq: null}} ]})

标签: node.js mongodb api express


【解决方案1】:

由于undefinednullsomeval 的含义不同,您的查询需要涵盖所有这些情况才能检索到所有数据。

使用这个查询,它利用一些基本的布尔逻辑来实现:

db.getCollection('test').find(
    {
        $or: [
            {"JoiningDate": {$gt: fromDate}},
            {"JoiningDate": {$eq: null}},
            {"JoiningDate": {$exists: false}}
        ]
    })

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多