MongoDB – Cómo obtener valores especificados de un arreglo en un documento
Aquí está el documento:
JSON
{
‘_id’: ObjectId(’61a4262a53ddaa8b93374613′),
‘userid’: ‘renyi’,
‘data1’: [{‘a’: 1}, 1, 2, 3],
‘data2’: [{‘c’: 1}, {‘b’: 2}, {‘c’: 3}, {‘c’: 2}],
‘data’: {‘0’: {‘a’: 1}}
}
Con esto:
python
coll.find_one({‘userid’:’renyi’,’data2.c’:1},{‘_id’:0,”data2.$”:1})
Puedo obtener:
JSON
{‘data2’: [{‘c’: 1}]}
Pero ¿cómo obtener:
JSON
{‘data2’: [{‘c’: 1},{‘c’: 2}]}
davy.ai
Para obtener {‘data2’: [{‘c’: 1},{‘c’: 2}]}, podemos utilizar el operador $in en la consulta, de la siguiente manera:
Esta consulta coincidirá con documentos donde el userid sea ‘renyi’ y data2 contenga al menos un elemento con c igual a 1 o 2. La proyección {‘_id’:0,”data2.$”:1} devolverá sólo el elemento(s) de data2 que coincidan.
El resultado será: