Mongo Db запрос с использованием условия if - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть данные Mongodb, которые выглядят следующим образом

{
    "userId" : "123",
    "dataArray" : [
        {
            "scheduledStartDate" : ISODate("2018-08-30T11:34:36.000+05:30"),
            "scheduledEndDate" : ISODate("2018-08-30T11:34:36.000+05:30"),
            "Progress" : 0,
            "ASD":""
        },
        {

            "scheduledStartDate" : ISODate("2018-09-22T11:34:36.000+05:30"),
            "scheduledEndDate" : ISODate("2018-10-01T11:34:36.000+05:30"),
            "Progress" : 0,
            "ASD":ISODate("2018-08-30T11:34:36.000+05:30"),
        }
    ],
    "userStatus" : 1,
    "completionStatus" : "IP",
}

Я хочу найти документ, в котором условие выглядит примерно так

(PROGRESS<100||(PROGRESS==100&&ASD not exists)).

1 Ответ

0 голосов
/ 24 сентября 2018

Это должно помочь вам ( $ elemMatch ):

db.collection.find({
    dataArray: {
        $elemMatch: {
            $or: [
                { Progress: { $lt: 100 } },
                { $and: [
                    { Progress: { $eq: 100 } },
                    { ASD: { $exists: false } }
                ]}
            ]
        }
    }
})

ОБНОВЛЕНИЕ на основе вашего комментария - это еще проще:

db.collection.find({
    $or: [
        { "dataArray.Progress": { $lt: 100 } },
        { $and: [
            { "dataArray.Progress": { $eq: 100 } },
            { "dataArray.ASD": { $exists: false } }
        ]}
    ]
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...