Stack Overflow en español · datos JSONL completos
Preparando el motor…
Al abrir la página se descargan todas las filas del dump desde
dsevilla/bd2-data:
unos 106,7 MB comprimidos en cinco ficheros. Sólo Body, Text y AboutMe se limitan a 100 bytes UTF‑8;
la carga completa puede necesitar varios GB de memoria del navegador. El botón permite cambiar a una muestra de 12,5 MB, con una pregunta
de cada ocho y su hilo completo; las consultas devolverán menos filas. Si falla, puedes reintentarlo, usar la muestra mínima incrustada o
abrir los ficheros descargados a mano. Los datos se comparten entre todas las páginas de ejercicios.
Los resultados se muestran en bloques de 25 documentos. El código del editor se evalúa en tu navegador y nada se envía a ningún servidor.
Compatibilidad: mingo ejecuta el lenguaje de consulta de MongoDB sobre objetos en memoria, no es un mongod. No hay índices, ni explain(), ni transacciones, ni búsqueda vectorial: esos ejercicios siguen necesitando el servidor del boletín. Además, el Body de las publicaciones, el Text de los comentarios y el AboutMe de los usuarios vienen limitados a 100 bytes UTF‑8.
Cómo escribir las consultas
Escribe una expresión con la forma db.colección.operación(...), usando la sintaxis de PyMongo que vemos en clase.
No hace falta crear un cliente, conectarse ni escribir await: la página ya proporciona db y traduce este pequeño subconjunto antes de pasarlo a mingo.
- Usa diccionarios Python, con las claves entre comillas:
{"PostTypeId": 1}. - Escribe
None,TrueyFalse, y métodos comofind_one,count_documents,update_oneyupdate_many. - Combina condiciones con
$andy$or; son claves de los diccionarios del filtro, igual que en MongoDB. - Ordena con
sort("Score", -1)o con varios pares:sort([("Score", -1), ("Id", 1)]). findyaggregatepueden terminar ento_list(). También se admite omitirlo en esta página.update_oneyupdate_manymodifican la copia en memoria; sus resultados tienenmatched_countymodified_count.upsert=Truetambién está disponible.- Para fechas usa
datetime(año, mes, día)odatetime.fromisoformat("2020-01-01"); se interpretan en UTC.
db.posts.find(
{"$and": [
{"PostTypeId": 1},
{"$or": [{"Score": {"$gte": 20}}, {"AnswerCount": {"$gte": 5}}]}
]},
{"Id": 1, "Title": 1, "Score": 1}
).sort([("Score", -1), ("Id", 1)]).limit(10).to_list()
db.posts.update_many(
{"$and": [{"PostTypeId": 1}, {"Score": {"$gte": 20}}]},
{"$set": {"Revisado": True}}
)
db.posts.update_one(
{"Id": 101},
{"$inc": {"Score": 1}}
).modified_count
La página traduce este subconjunto de PyMongo a la API de mingo. Las actualizaciones sólo viven en la sesión del navegador y se pierden al recargar o cambiar de conjunto de datos. Sobre el conjunto completo, un update_many recorre los documentos en memoria; para experimentar conviene empezar con la muestra mínima.