2011-06-09 3 views
3

C'est des séances de collectenodejs - mongodb - comment trouver tout où un! = B?

{ 
    "_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") 
} 

Je dois trouver les dossiers où le canal est pas égal à 3, ci-dessous est ce que j'ai essayé

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

problème: le résultat me donne tout le dossier où le canal = 3. C'est faux.

+1

Avez-vous essayé d'avoir 3 comme une chaîne. var k = '3' –

+0

j'ai essayé cela, ne fonctionne pas. –

Répondre

9

Essayez

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

Parce que chaque pièce de collection de sessions contient un objet "session" qui contiennent un attribut "canal".

+0

qui donne tout le résultat où channel = k. –

+1

C'est parce que "3" est stocké sous forme de chaîne. Vous devriez essayer {'$ ne': '3'}. – FGRibreau