我有一个flag
和一个key
。
如果flag
是true
我想列出name
字段包含key
的文档。
否则 - 如果flag
是false
- 我想搜索关键字name
或surname
字段。
这里是收集的例子;
{id: 1, name: "green" , surname: "brown"},
{id: 2, name: "black" , surname: "brown"},
{id: 3, name: "brown" , surname: "yellow"}
if flag:true,key:brown,I expect;
{id: 1, name: "green" , surname: "brown"},
{id: 2, name: "black" , surname: "brown"},
{id: 3, name: "brown" , surname: "yellow"}
if flag:false,key:brown,I expect;
{id: 3, name: "brown" , surname: "yellow"}
如何使用$ cond查找?
我可以做到这一点;
if(flag){
db.collection.find({name: key})
}else{
db.collection.find({$or: [{name: key}, {surname: key}])
}
是这样的可能吗?但是这会引发错误。我如何编辑?
db.collection.find({$cond: [ if: { flag }, then: {$or: [{name: "brown"}, {surname: "brown"}]}, else: {name: "brown"} ]})
'$ cond'是条件聚合算子。它不适用于常规查询。在客户端保持这种逻辑可能更好。 – Veeram