Tengo un campo de matriz en mi colección que tiene un valor con propiedades o un valor vacío como "[]"
Para obtener los documentos que tienen un valor "[]" vacío en mongodb, uso
db.getCollection('collection').find({"ArrayFieldName":{$eq:[]}})Esto me da el resultado esperado. Pero cuando trato de formar esta consulta en C # usando el controlador mongodb, no pude obtener el resultado esperado.
Probé, filterBuilder.Eq("ArraryFieldName", "[]") y filterBuilder.Eq("ArraryFieldName", new ArraryClassName(){})
Necesita ayuda con el generador de filtros C# para especificar $eq:[] para el campo de matriz.
Una instancia de ArraryClassName claramente no funcionará porque no es una instancia de matriz, es un solo objeto. Del mismo modo "[]" no funcionará porque es una string .
Puede verificar traducir directamente su consulta CLI a este filtro:
Builders<BsonDocument>.Filter.Eq<BsonArray>("ArraryFieldName", new BsonArray())Aunque si simplemente desea verificar que la matriz existente esté vacía, puede usar este filtro en su lugar:
Builders<BsonDocument>.Filter.Size("ArraryFieldName", 0)PD: Sugiero encarecidamente usar modelos de datos de C#, ya que hace que todo sea mucho más fácil de trabajar.
Además, ha llamado a su campo ArraryFieldName (observe la r adicional al final de Array). Si no tiene datos existentes con este nombre de propiedad mal escrito, es posible que desee corregir la ortografía.