mongo-запросы с несколькими выражениями, указывающими один и тот же оператор - PullRequest
0 голосов
/ 16 октября 2018

Здравствуйте. Я пытаюсь выполнить следующий запрос в своей базе данных.

function getChat(nameChat, nameUser, callback) {
global.db.collection('chatUsers').find({ 
    $and: [ 
        { $or : [ { nameChat: nameChat }, { nameChat: nameUser } ] },
        { $or : [ { nameUser: nameChat }, { nameUser: nameUser } ] }
    ]
}).sort({date: 1}).toArray(
    function (err, docs) {
        if (err) return console.log("algo deu errado" + err);
        console.log("exit\n"+docs+nameUser);
        callback(docs);
    }
);}

Но запрос возвращается пустым. Вот пример объектов, которые у меня есть в моей коллекции пользователей чата:

{"_id":"5bc3e6d060d4da04dcd66517","nameChat":"Daciolo bolsominion","nameUser":"Mc Xhamps","date":"2018-10-14T17:22:00.000Z","msg":"Você pertence a URSAL"}

{"_id":"5bc52fc3b878631f84c77c41","nameChat":"Mc Xhamps","nameUser":"Daciolo bolsominion","date":"2018-10-01T17:25:00.000Z","msg":"E ai, bora ser Presidente"}

Чтобы было ясно, я бы хотел, чтобы мой запрос возвращал все объекты с именем Chat или name User, присутствующие в одном и том же объекте. При этом запросе возвращаются только пустые объекты.

1 Ответ

0 голосов
/ 16 октября 2018

Привет, Эрик, поменяй и с или получишь нужный результат.

global.db.collection('chatUsers').find({ 
    $or: [ 
        { $or : [ { nameChat: nameChat }, { nameChat: nameUser } ] },
        { $or : [ { nameUser: nameChat }, { nameUser: nameUser } ] }
    ]
}).sort({date: 1})
...