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