#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′}.