2014-01-08 2 views
7

Я использую собственный драйвер mongodb для node.js и не могу получить доступ к выбору поля. То, что я хочу сделать, - это ограничить поля для имени. Я не хочу «последний» в выходе.Как сделать выбор поля в find() в собственном драйвере mongodb?

Я делаю это:

db.collection("test").find({},[{'name':true,'last':false}]).toArray(function(err, results) { 
    console.dir(results); 
}); 

Но отпечатки журнала:

[ { _id: 524b53588aa4f388de1c2ddb }, 
    { _id: 524b53548aa4f388de1c2dda } ] 

Так что нет на выходе нет name.


Update: Я попробовал объект вместо массива - не работает. Причина в том, что они действительно смешивают включение и исключение. Вы не можете его смешивать. Когда у меня было только "name":true, это сработало.

+0

Попробуйте передать 1 вместо истинного. А также не используйте массив. Передайте объект {name: 1, last: 1} –

ответ

15

Аргумент выбора поля для find - это объект, а не массив. И вы не можете смешивать включение поля и исключение (за исключением _id), поэтому она должна быть:

db.collection("test").find({}, {'name': true}).toArray(function(err, results) { 
    console.dir(results); 
}); 
+0

Я получаю 'toArray()' не функция. Но когда я передаю функцию в качестве третьего аргумента для 'find()', я возвращаю все поля в ответе. –

0

опускает массив:

db.collection("test").find({},{'name':true,'last':false}).toArray(function(err, results) { 
    console.dir(results); 
}); 
+0

это не сработало. Пришлось удалить последнее: false. – user3111525

4

Если вы используете последнюю версию драйвера MongoDB 3.0 nodejs, то попробуйте этот код:

db.collection('test').find({}).project({name: 1, last: 1}).toArray(); 
+0

Спасибо, что это помогает.)) – Yoga

0

рекомендуемый способ сделать это в v3.0 это с полем проекции в параметрах объекта:

db.collection('test').find({}, {projection: {name: 1}}).toArray() 

Как уже упоминалось в принятом ответе, вы все еще не можете смешивать включение и исключение.

http://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html#find

Смежные вопросы