es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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}]}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener {‘data2’: [{‘c’: 1},{‘c’: 2}]}, podemos utilizar el operador $in en la consulta, de la siguiente manera:

    coll.find_one({'userid':'renyi','data2.c':{'$in':[1,2]}},{'_id':0,"data2.$":1})
    

    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á:

    {'data2': [{'c': 1},{'c': 2}]}
    

Comments are closed.