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
Javascript 查找数组中可能存在或不存在的元素_Javascript_Mongodb - Fatal编程技术网

Javascript 查找数组中可能存在或不存在的元素

Javascript 查找数组中可能存在或不存在的元素,javascript,mongodb,Javascript,Mongodb,我有一个文档看起来有点像这样: > db.orders.find() { _id: ObjectId(), _reminders: [{ notified: true, timestamp: ISODate(), completed: false }] } { _id: ObjectId(), _reminders: [] } 我试图找到的是订单集合中的一个文档,“提醒”在特定时间范围内不包含提醒,并且未完成 db.orders.find({

我有一个文档看起来有点像这样:

> db.orders.find()
{
  _id: ObjectId(),
  _reminders: [{
    notified: true,
    timestamp: ISODate(),
    completed: false
  }]
}
{
  _id: ObjectId(),
  _reminders: []
}
我试图找到的是订单集合中的一个文档,“提醒”在特定时间范围内不包含提醒,并且未完成

db.orders.find({
  '_reminders': {
    $elemMatch: {
      completed: false,
      timestamp: { $ne: time }
    }
  }
});
问题是,这将找不到一个没有任何提醒的订单

如何查询这个问题?

您应该使用查询

db.orders.find({$or:[{{u提醒:[]},这里放上您的查询与时间匹配]})
-它将返回与您的查询匹配的文档和带有空提醒的文档

您应该使用查询


db.orders.find({$or:[{{u提醒:[]},这里放上你的查询与时间匹配]})
-它将返回与你的查询匹配的文档和带有空提醒的文档

这应该能满足你的需要

db.getCollection('Clock').find({
$or : [
    {
        _reminders : {
                $elemMatch : {
                    timestamp : {
                        $lte : ISODate("2019-07-12T15:35:32.278Z"), 
                        $gte :  ISODate("2012-07-12T15:35:32.278Z") 
                        },
                    completed : false
                }
        }
    },
    {
       _reminders : {$size : 0}     
    },
    {
       _reminders : {$exists : false}
    }
]

})

这会让你得到你想要的

db.getCollection('Clock').find({
$or : [
    {
        _reminders : {
                $elemMatch : {
                    timestamp : {
                        $lte : ISODate("2019-07-12T15:35:32.278Z"), 
                        $gte :  ISODate("2012-07-12T15:35:32.278Z") 
                        },
                    completed : false
                }
        }
    },
    {
       _reminders : {$size : 0}     
    },
    {
       _reminders : {$exists : false}
    }
]
})