Aquí está mi estructura de datos.Prueba cadena vacía en mongodb y pymongo
[{
"name": "David",
"lastname": "",
},
{
"name": "Angela"
}]
"lastname" a veces está presente y algunas veces no y en algún momento es "".
Quiero obtener todas las filas que tienen el apellido no igual a "". Pero esto no funciona. Devuelve las dos filas cuando el apellido es "" y cuando el apellido no está presente en absoluto. en el ejemplo anterior solo quiero obtener el nodo David.
db.collection.find({"lastname": {"$ne": ""}})
se necesitan presupuestos de $ ne para python. por lo que la expresión {$ ne: ""} se evalúa como verdadera tanto cuando level2_c es "" como cuando level2_c node no existe para comenzar. Así que tuve que filtrarlos así {"level2_c": {"$ exists": True}, "level1_b.level2_c": {"$ ne": ""}}. esto funciona pero parece algo feo. –
Estaba probando desde el shell mongo. Me alegro de que hayas encontrado la respuesta correcta. – Kyle
Gracias. Aclaré la pregunta un poco. ¿Puedes mirarlo de nuevo? ¿hay una mejor respuesta que esta: {"lastname": {"$ exists": True}, "lastname": {"$ ne": ""}}? –