Mongodb 聚合$匹配文档或全部

Kle*_*ios 6 mongodb mongodb-query

我有一个参数化的 mongodb 聚合查询,其中参数接收要过滤的给定 ObjectID 或 NULL(如果我想返回所有文档)。我的意思是,我想使用相同的管道返回一个或所有文档。

我的管道查询是:

db.user.aggregate([
  {'$match': { _id : <MYUSERPARAM> } }
]);
Run Code Online (Sandbox Code Playgroud)

MYUSERPARAM的值将具有要过滤的给定 ObjectId,或者如果我不想过滤单个文档而想返回所有文档,则 MYUSERPARAM 的值将具有某个值。

然后我的系统将替换MYUSERPARAM并运行查询,例如:

过滤单个文档:

db.user.aggregate([
  {'$match': { _id : ObjectId("5e2b9ab8b1dbae5124e4b635") } }
]);
Run Code Online (Sandbox Code Playgroud)

或以某种方式返回所有文档:

db.user.aggregate([
  {'$match': { _id : $all } }
]);
Run Code Online (Sandbox Code Playgroud)

但上面的方法不起作用。

如何使用管道查询来过滤单个文档或返回所有文档,只需更改查询中的单个值/参数(如上面的示例所示)?

Val*_*jon 13

听起来像 NoSQL 注入:

db.user.aggregate([
  {'$match': { _id : {$ne: ""} } }
]);

or

db.user.aggregate([
  {'$match': { _id : {$exists: true} } }
]);
Run Code Online (Sandbox Code Playgroud)