Disculpas por la pregunta nood. Estoy empezando a usar MongoDB y MongoDB Shell.
Tengo una base de datos llamada Distribuidores que se parece un poco a esto (muy simplificado):
[ { "Id": 1, "Vehicles": [ { "Manufacturer": "Ford" }, { "Manufacturer": "MG" }, { "Manufacturer": "Citroen" } ] }, { "Id": 2, "Vehicles": [ { "Manufacturer": "Ford" }, { "Manufacturer": "Nissan" }, { "Manufacturer": "Ford" } ] } ]Estoy tratando de entender cómo se filtran las colecciones dentro de las colecciones EG. Digamos que quería seleccionar todos los Ford de Id 2.
llego hasta:
const dealer = database.collection('Dealers'); const result = await dealer.find({Id: 2})y probé:
const result = await dealers.find({ Id: 2, Vehicles: [ { Manufacturer: "Ford" } ] })Pero sé que eso no funcionará porque no itera a través de la colección de vehículos. ¿Es este el tipo de instancia en la que usaría una agregación? Como digo, soy muy nuevo en este tipo de entorno y realmente agradecería cualquier sugerencia, por favor.
Acabo de probar. Puede usar la función Agregar para hacer coincidir los elementos dentro de la matriz en la colección. Al igual que la siguiente consulta, seleccionará todos los documentos que tengan una identificación igual a 1 y un fabricante igual a Ford
db.MyCollection.aggregate([{$match:{Id:1}},{$unwind:"$Vehicles"}, {$match: {"Vehicles.Manufacturer":"Ford"}}]);Está volviendo así. He usado mi propia identificación, es decir, igual a uno, puedes cambiar esto.