我有一个参数化的mongodb聚合查询,其中该参数接收给定的ObjectID用于过滤,或者如果我想返回所有文档,则为NULL。我的意思是,我想使用相同的管道来返回一个或所有文档。
我的管道查询如下:
db.user.aggregate([
{'$match': { _id : <MYUSERPARAM> } }
]);
MYUSERPARAM的值将拥有一个给定的ObjectId用于过滤或者如果我不想过滤单个文档并且希望返回所有文档,则会有一些值。
然后我的系统将替换MYUSERPARAM并运行查询,例如:
要过滤单个文档:
db.user.aggregate([
{'$match': { _id : ObjectId("5e2b9ab8b1dbae5124e4b635") } }
]);
或者以某种方式返回所有文档:
db.user.aggregate([
{'$match': { _id : $all } }
]);
但上述方法无效。
我该如何编写管道查询以过滤单个文档或更改查询中的单个值/参数来返回所有文档?与上述示例类似。