MongoDB:按嵌套在对象字段中的日期查找,而不使用$or

MongoDB:按嵌套在对象字段中的日期查找,而不使用$or,mongodb,mongodb-query,Mongodb,Mongodb Query,我的示例文档: { name : 'ABC123', active: false, meta : { createdBy: 'user@gmail.com', created : ISODate("2017-11-20T13:04:15.757Z"), // 13:04 editedBy : 'user2@gmail.com', edited : ISODate("2017-11-20T13:06:

我的示例文档:

{
    name  : 'ABC123',
    active: false,
    meta  : {
        createdBy: 'user@gmail.com',
        created  : ISODate("2017-11-20T13:04:15.757Z"), // 13:04
        editedBy : 'user2@gmail.com',
        edited   : ISODate("2017-11-20T13:06:06.033Z"), // 13:06
        removedBy: 'user@gmail.com',
        removed  : ISODate("2017-11-20T13:09:11.033Z")  // 13:09
    }
}
如何查询所有具有以下内容之一的文档:

  • meta.created
  • meta.updated
  • meta.已删除
字段
$gt
是否超过我指定的日期(没有
$或

我现在所拥有的:

const d = ISODate("2017-11-20T13:00:00.033Z"); // 13:00
db
.collection('example')
.find(
    { 
        $or: ['meta.removed', 'meta.edited', 'meta.created'].map(m => { 
            return { [m]: { $gt: d } } 
        })
    } 
);
我尝试过但没有成功的:

const d = ISODate("2017-11-20T13:09:11.033Z"); // 13:00
db
.collection('example')
.find(
    { 
        'meta.$': { $gt: d }
    } 
);

只是出于好奇,为什么没有美元或?它是相当基本的逻辑运算符。天真的答案是用
而不是
组合来代替它,但我认为这不是你要问的。因为我很好奇,当对象字段类型混合时,它是否能以某种方式与
$
一起工作。我认为即使字段类型相同,
$
也不起作用
$
用于数组,仅在投影部分。是否可以通过未知的
对象进行查询。您知道的键
名称?仅使用聚合