J'ai la structure oùSélection d'un élément enfant avec MongoId
Un participant aura intégré de nombreux objets « Had_drinks » .. chaque « Had_drink » a la possibilité (pas toujours) d'avoir un seul objet « Photo » intégré à l'intérieur ...
J'ai l'ID d'une photo et je veux retirer l'ensemble de l'objet photo. La racine du document commence au Participant
Voici un exemple de la structure .. Ci-dessous deux participants chacun ont seulement un « had_drink » dans cet exemple et le premier participant a une photo avec leur
{
_id: "4f0ecfe57e65260001000002",
had_drinks: [
{
_id: "4f0ed1357e65260001000004",
at: "2012-01-07T00:00:00-08:00",
beer_id: "4f0ed1357e65260001000003",
cost: 3.5,
location: "Quakers",
photo: {
photo_id: "66832993035",
page_url: "http://www.flickr.com/photos/[email protected]/66832993035/",
square_url: "http://farm8.staticflickr.com/7035/668a3993035_fb180e39648_s.jpg",
thumbnail_url: "http://farm8.staticflickr.com/7035/6sad683993035_fb65180e9648_t.jpg",
small_url: "http://farm8.staticflickr.com/7035/66839asd93035_fb1s80e9648_m.jpg",
medium_url: "http://farm8.staticflickr.com/7035/668s3993035_fb18h0e9648.jpg",
large_url: "http://farm8.staticflickr.com/7035/66839v93035_fb180e9648_b.jpg",
original_url: null
},
rating: "4",
uploaded_at: "2012-01-12T04:25:25-08:00"
}
],
mongoid_user_id: "4f0ecf3e57e65260001000001",
name: "Michael Mark"
},
{
_id: "4f08aa477eddd05000100000c",
had_drinks: [
{
_id: "4f0ff0513942d4e000100000b",
at: "2012-01-07T030:00:00-08:00",
beer_id: "4f0ff0561394d74e0001000009",
cost: 4.1,
location: "Bootleggers",
photo: null,
rating: "3",
uploaded_at: "2012-01-13T030:50:25-08:00"
}
],
mongoid_user_id: "4f08aa477e34ddd0000100000b",
name: "Daniel M"
},
Comment puis-je obtenir la sortie de la photo? D'après ce que j'ai appris dans mon court temps avec mongoid et la base de données de document je dois commencer la question de la racine et travailler vers le bas?
Je cherchais quelque chose comme ça
Participant.where(:had_drinks.where(:photo.photo_id => params[:id]))
Mais que je suis miles au large jusqu'à
---- EDIT :) Penser à travers Je suppose que je dois faire la requête suivante
1: Obtenez un participant avec cette photo
2: Sélectionnez le premier participant
3: filtrer leurs photos pour des photos avec cette id
4: Sélectionnez la première photo (ne fera en fait jamais un)
juste savez pas comment faire cette requête dans ma connaissance MongoId/MongoDB limitée
Vous n'avez pas besoin de '$ elemMatch' lorsqu'il n'y a qu'une seule condition à remplir. –
@SergioTulentsev ne savait pas cela - merci. –