如何根据 Mongo 中集合中的布尔值有条件地查询密钥
How to conditionally query keys based on boolean in collection in Mongo
我有一个项目集合。
结构示例:
{
"_id" : "56bb6c33efedf80e0e01596b",
"name" : "Item1",
"price" : 102,
"category" : "food",
"date" : { ... },
"description" : "Description",
"__v" : 0
}
date
可以是两件事之一
1.
date : {
"day_of_week" : "wednesday",
"weekly" : true
}
阿拉伯数字。
date : {
"end_date" : "20150122",
"start_date" : "20150121",
"weekly" : false
}
date
对象基于布尔值weekly
。
我的问题是,如何格式化查询以搜索两种类型的日期对象?我想首先检查每周布尔值是真还是假,然后基于此查询日期。我已经通过将下面的代码分成两个单独的条件来尝试它,但我似乎无法正确格式化条件。
Item.aggregate([
{
$match: {
'price': {
'$gt' : 0 ,
'$lt' : 200
},
'category' : food,
'date.day_of_week': {
'$cond': [
$date.weekly,
'wednesday',
null
]
},
'date.start_date': {
'$cond': [
$date.weekly,
null,
20150121
]
}
}
}], function(err, deals) {
console.log(err, deals)
res.send(deals)
})
所以我坚持尝试根据布尔值weekly
查询以分隔date
对象中的键。
任何帮助将不胜感激。
$cond
运算符不能在$match
中使用,因为只允许查询运算符,如下面的注释中所述。
如果你的数据是一致的,因为布尔值告诉你的所有$date.weekly
都是日期子文档中存在的键,那么一个简单的$or
可以处理它:
{ $or: [ { date.day_of_week: 'wednesday' },{ date.start_date: '20150121' } ] }
如果您不执行任何其他聚合,则作为查询会更简单、更快捷。
相关文章:
- 通过js在新选项卡中有条件地打开url
- jQuery-有条件地附加HTML
- 有条件更新d3.js力图中节点的最佳方法
- Woocommerce产品选项有条件
- 有条件地在选项标记中应用布尔属性
- ADF:有条件地加载javascript资源
- 如何有条件地更改角度中的orderBy参数
- 无法在有条件呈现的富:面板上提交h:form
- 有条件地与react路由器链接
- 有条件地运行javascript函数-Razor,HTML
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- CSS根据属性的可用性有条件地应用样式
- 将字段设置为有条件地使用所需的字段验证器
- 将https替换为有条件的锚标记Javascript
- 有条件地将查询字符串追加到角度 href
- 如何根据 Mongo 中集合中的布尔值有条件地查询密钥
- 我可以有条件地将 where() 子句添加到我的 knex 查询中吗?
- 替换URL'中的字符串查询;s与Javascript(有条件)
- 如何有条件地使用javascript,如CSS3媒体查询,方向
- 如何:根据内容,使用PHP/JavaScript对MySQL查询生成的
进行有条件格式化