nodejs — mongodb — как найти все, где a!= b?

#mongodb #node.js

#mongodb #node.js

Вопрос:

Это сеансы сбора

 {
    "_id": "R65i3SmvucW9imK2cxA6wdFb.GXoSHjly7obzFNslklNCBvE0UrW/qOiNmiBtPN24/1c",
    "session": {
        "channel": "all",
        "username": "xuka"
    },
    "expires": NumberLong("1307692520000")
} {
    "_id": "zJYZj2jwxa5zN0uZcCZC26zp.Tpp8fVkqwKLZEpRWgq7/3DDTcDw9VSlskBum28gox 0",
    "session": {

        "channel": "3",
        "username": "hellos"
    },
    "expires": NumberLong("1307692826000")
}
  

Мне нужно найти записи, где канал не равен 3, ниже то, что я пробовал

 var k =3;
db.collection('sessions', function(err, collection){                        
    collection.find({channel:{'$ne':k}},function(err, cursor) {     
    });
});
  

проблема: в результате я получаю всю запись, где channel = 3. Это неправильно.

Комментарии:

1. Вы пробовали использовать 3 в качестве строки. var k = ‘3’

Ответ №1:

Попробуйте

 var k =3;
db.collection('sessions', function(err, collection){                        
    collection.find({'session.channel':{'$ne':k ''}},function(err, cursor) {     
    });
});
  

Потому что элемент каждой коллекции сеансов содержит объект «session», который содержит атрибут «channel».

Комментарии:

1. это дает весь результат, где channel = k.

2. Это потому, что «3» хранится в виде строки. Вы должны попробовать {‘$ ne’:’3′}.