2015-01-21 4 views
0

Я использую passport.js для хранения своих пользователей в моем mongodb. Объект пользователя выглядит следующим образомОбъект запроса внутри объекта

{ 
    "_id" : ObjectId("545ac4930acf4b5394cbc244"), 
    "local" : { 
     "password" : [encrypted password], 
     "email" : "[email protected]", 
     "level" : "super user", 
    }, 
    "__v" : 0 
} 

Я пытаюсь отобразить всех пользователей, которые являются частью группы «супер пользователя».

Я нахожу это трудным, так как мои данные находятся на двух уровнях внутри объекта.

+0

Использовать точную нотацию: db.users.find ({"local.level": "super user"}) – joao

+0

Спасибо, что работает! Как отметить ответ в качестве ответа? Также, как я делаю то же самое, но вместо того, чтобы возвращать весь объект, просто вернув «пароль» и «письмо». Cheers – sebko

+0

Я добавил полный ответ, включая информацию о том, как вернуть только некоторые поля. – joao

ответ

0

Используйте точечную нотацию, как это:

db.users.find({"local.level" : "super user"}) 

Чтобы вернуть только некоторые поля, то find имеет дополнительный проекционный аргумент. Для пароля и электронной почты вы могли бы сделать что-то вроде:

db.users.find({"local.level" : "super user"}, {"local.password":1, "local.email":1, "_id":0}) 

Замечание: при _id всегда возвращается, если не отмечен как 0 в проекции.

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