Mongodb агрегат $ соответствует документу или все - PullRequest
0 голосов
/ 26 января 2020

У меня есть параметризованный агрегированный запрос 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 } }
]);

Но приведенный выше подход не работает .

Как получить конвейерный запрос для фильтрации одного документа ИЛИ вернуть все документы, просто изменив одно значение / параметр в запросе, как в примере выше?

1 Ответ

0 голосов
/ 26 января 2020

Похоже, нет SQL инъекция:

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

or

db.user.aggregate([
  {'$match': { _id : {$exists: true} } }
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...