2015-06-06 2 views
1

Я работаю с сервером nodejs, используя mongoDB. Теперь у меня есть образец данных:Получить конкретные данные в mongodb nodejs

{ 
     "_id": ObjectId("555f1c0c7f4b820758b439b0"), 
     "user": "Guest1", 
     "friend": [{ 
      "myfriend": "Guest2", 
      "info": [] 
     }, { 
      "myfriend": "Guest3", 
      "info": [] 
     }] 
    } 

Теперь я хочу, чтобы поставить все «myfriend» в массив, например:

var listfriend = ["Guest2","Guest3"]; 

Так как я могу это сделать?

Спасибо за чтение :)

ответ

2

Попробуйте использовать метод map() следующим образом:

var listfriend = db.names.findOne(
    {"user" : "Guest1"}, 
    {"_id": 0, "friend": 1} 
).friend.map(function(obj){ 
    return obj.myfriend; 
}); 

console.log(listfriend); // ["Guest2","Guest3"] 
0

вы хотите использовать рамки агрегирования ли?

var aggregateFriends = function(db, callback) 
{ 
    db.collection('test').aggregate( 
    [ 
     { $unwind: "$friend" }, 
     { $group: { _id: "$user", friends: {$push: "$friend.myfriend" } } } 
    ] 
).toArray(function(err, result) { 
     console.log(result); 
     db.close(); 
    }); 
}; 


var MongoClient = require('mongodb').MongoClient; 
var assert = require('assert') 
var ObjectId = require('mongodb').ObjectID; 
var url = 'mongodb://localhost:27017/test'; 
MongoClient.connect(url, function(err, db) { 
    assert.equal(null, err); 
    aggregateFriends(db, function() { db.close(); }); 
}); 
Смежные вопросы