В моем приложении у меня возникают проблемы при написании сценария монго для поиска и отображения журналов обслуживания на одном транспортном средстве. Например, у меня есть два пользователя с несколькими транспортными средствами. Каждый автомобиль имеет несколько сервисных журналов. С запросами, которые я написал, мне не очень повезло, отображая только объекты serviceLogs
от второго пользователя с _id:"2"
от vehicle
с _id:14
. Ниже приведены примеры данных.
db.collection.insert(
{_id:"1",vehicles:[
{_id:11,make:"Mazda",model:"CX5",serviceLogs:[
{_id:110, "miles" : 7567,"service" : "Wipers replacement"}
]}]});
db.collection.insert(
{_id:"2",vehicles:[
{_id:12,make:"Mazda",model:"CX5",serviceLogs:[]},
{_id:13,make:"Chevy",model:"Sonic",serviceLogs:[]},
{_id:14,make:"Toyota",model:"Tacoma",serviceLogs:[
{_id:111, "miles" : 2134,"service" : "Brake pads replacement"},
{_id:112, "miles" : 5678,"service" : "VSS replacement"}
]}]});
Ниже приведены запросы, которые я пробовал, я возился с ними, но не получал никакой удачи.
db.collection.find({"_id": "2", vehicles: {$elemMatch: {make: "Toyota", model: "Tacoma"}}} ).pretty();
db.collection.find({"_id": "2", "vehicles.$.serviceLogs": {$elemMatch: {serviceLogs:{id: 111}}}})
db.collection.find({"_id": "2", vehicles: {$elemMatch: {serviceLogs:{id: 111}}}})
Ожидаемые результаты:
{
"_id" : 111.0,
"miles" : 2134.0,
"service" : "Brake pads replacement"
},
{
"_id" : 112.0,
"miles" : 5678.0,
"service" : "VSS replacement"
}
Любые предложения будут с благодарностью, спасибо.