MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come eseguire una query in questa struttura di documenti nidificata (MongoDB)?

Ho risposto un paio di volte sul ritiro dei documenti secondari da mongo collection qui e qui

Semplicemente non c'è modo di farlo attualmente. Questo è il comportamento del filtraggio di documenti incorporati a più livelli, normalmente il filtro corrispondente restituirebbe l'intero documento, non i sottoinsiemi.

Ci sono già due problemi in sospeso in mongo relativi a questo operatore posizionale ($) nei campi per restituire lo specificatore e Possibilità di utilizzare i dati di un documento secondario il cui contenuto è stato utilizzato per soddisfare una query utilizzando l'operatore $ . (Accedi per votare se hai davvero bisogno della funzione)

E anche il tuo schema alternativo non è utile qui.

quindi devi archiviare ciascuna funzionalità in un documento separato come questo per farlo funzionare nel modo desiderato

caratteristica 1

{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}

caratteristica 2

{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}

e interrogare

db.features.find({'_id':someobjectid})

restituirà solo la caratteristica specifica