2013-04-19 3 views
0

Моя коллекция как этотПоиск встроенного документа в mongodb?

{ 
    "name":"" 
    "type":"" 
    "arr":[ 
    { 
    "type":"" 
    "other field" 
    ... 
    }, 
    { 
    "type":"" 
    "other field" 
    ... 
    } 
} 

и мое состояние входной параметр это имя. так на основе имени я должен принести документ и еще одно условие, что тип снаружи и внутри массива должны соответствовать .. нужно получить эти записи в одиночку .. Как достичь этого

+0

Думаю, вам нужно будет использовать для этого два запроса. – Philipp

+0

да. Но без этого есть какой-то вариант? – Raj

ответ

0

Bad производительность, а просто работать (http://docs.mongodb.org/manual/reference/operator/where)

db.SOME_COLLECTION.find({ 
    name:'SOME_VALUE', 
    $where: 
    function() { 
     for(var i = 0; i < obj.arr.length; i++) { 
     if(obj.arr[i].type==obj.type) { 
      return obj 
     } 
     } 
    } 
    } 
) 

P.S. структура агрегации решена аналогичными задачами, но в этом случае imho, только $ где доступно предложение

+0

@khurrum qureshi - основная проблема сравнения значений в field1 и field2 –

0

Если я вас правильно понял, это, как вы получите желаемый результат

{name:"",type:"",arr.type:""} 

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

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