2013-07-11 3 views
0

Есть ли способ получить определенные функции полей заданных параметров? Идея состоит в том, чтобы возвращать поля, содержащиеся в переменной POST.Получить специальные поля с Mongodb

Я знаю, что я должен использовать проекцию, но в проекции нет оператора $.

я хотел бы что-то вроде:

db.getCollection("130637B1").find({$and:[{'node_id':1}, {'ctype': 'cpu'}]}, {'components.sensors.name': {$in: {'components.sensors.name':[request.POST]}}}) 

Любая идея?

+1

Прогнозирование этого многоуровневого уровня не будет работать (не действительный документ BSON), даже если бы вы могли это сделать, вам лучше было бы проецировать корневой документ и затем его фильтровать. – Sammaye

+0

arf, иногда mongodb сосет :( – billyJoe

ответ

1

Оператор для проекций не существует, но это не значит, что вы не можете этого сделать. Следующий запрос работает нормально, например:

> db.so.drop(); 
true 
> db.so.insert({ node_id: 42, ctype: 'cpu', components: { sensors: { name: 'foo', 'id' : '42bar' }, temp: 78.5 } }); 
> db.so.find({}, { ctype: 1, 'components.sensors.name' : 1 }); 
{ "_id" : ObjectId("51dead724efd2a480aa6e6b1"), "ctype" : "cpu", "components" : { "sensors" : { "name" : "foo" } } } 

Я не совсем уверен, что ваш request.POST содержит, так что я не могу дать более индивидуальный ответ.

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