sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo escribir la condición de coincidencia para los valores de matriz?

Ok, puedes hacerlo de dos maneras:

Como tienes esto:

uid = Objectid("5d518caed55bc00001d235c1")
disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']

Debe convertir su lista de cadenas en una lista de ObjectId usando el código python:

from bson.objectid import ObjectId


disuid = ['5d76b2c847c8d3000184a090', '5d7abb7a97a90b0001326010']
my_list = []


for i in disuid:
    my_list.append(ObjectId(i))

Se verá así:[ObjectId('5d76b2c847c8d3000184a090'),ObjectId('5d7abb7a97a90b0001326010')]

luego usando la nueva lista my_list , puede hacer una consulta como esta:

user_posts.aggregate([{"$match" : { "$or" : [{ "userid" : uid }, { "userid" : { "$in" : my_list }}]}}])

O de otra manera que no preferiría, ya que convertir solo unos pocos en código es más fácil en comparación con n número de valores para userid campo sobre todos los documentos en la base de datos, pero por si acaso, si desea que se haga mediante la consulta de la base de datos:

user_posts.aggregate([{$addFields : {userStrings : {$toString: '$userid'}}},{"$match" : { "$or" : [{ "userid" : uid }, { "userStrings" : { "$in" : disuid }}]}}])

Nota: En caso de que no tenga el paquete bson, debe instalarlo haciendo algo como pip install bson