2016-04-20 5 views
1

Есть ли решение проблемы?Получение массива в [object OBJECT] в mongodb

Предположим, что у меня есть db as;

{ 
    name: "Alex" 
    id: 1 
} 
{ 
    name: "Felix" 
    id: 2 
} 


db.collection.find({}, {name:1, id:0}).toArray() 

возвращается как;

result 
    object 
    name: Alex 
    object 
    name: Felix 

Я уже ограничил поля, чтобы получить только имя в виде массива. Есть какой-либо способ сделать это? Почему этот запрос возвращается в формате [object OBJECT]?

Мое решение; перемещая result и вставляя каждый объект имени в некоторый массив. Я смотрю что-то другое. Может, речь идет о запросе, который я написал?

ответ

1

Вы передаёте функцию в toArray()?

var mongo = require('mongodb').MongoClient; 
var mongoURL = 'mongodb://localhost:27017/example'; 

mongo.connect(mongoURL, function(err,db){ 
    db.collection('collection').find({}).toArray(function(err, res){ 
    console.log(res); 
    db.close(); 
    }); 
}); 

Запуск выше данных будет возвращать все документы, хранящиеся:

C:\Users\james.bubb\node\>node test.js 
[ { _id: 571798647849a3c217e84d61, name: 'Alex', id: 1 }, 
    { _id: 571798757849a3c217e84d62, name: 'Felix', id: 2 } ] 

В качестве альтернативы, чтобы просто отобразить имена вместо входа весь результат на консоль (или то, что вам нужно сделать):

res.forEach(function(doc){ 
    console.log(doc.name) 
}); 

Где doc является каждый отдельный документ, который вы сохранили.

Конечно, вы можете указать критерии для фильтрации результатов в пределах функции find().

Существует хорошее введение в использование MongoDB с узлом на сайте NPM (см. here для получения подробной информации о выборе документов).

0

Как я понимаю, вы должны получить все имена как массив, так что в этой ситуации вы можете использовать aggregation:

db.collection.aggregate([ 
    {$group : {'_id' : "names", 'names' : {$push : '$name'}}} 
]); 

В результате вы получите это:

{ "_id" : "names", "names" : [ "Alex", "Felix" ] } 

Тогда вам может просто получить все имена пользователей в виде массива из результата запроса

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