2016-11-14 9 views
1

このスキーマでどのようにidでイメージを見つけることができましたか?私はユーザーのIDと私が探しているイメージのIDを持っています。これを行うための最善の方法と、この場合のすべての画像を同じIDにするか、同じユーザーに属していないため同じIDを持つことができますか?mongoose query:配列内のidでオブジェクトを見つける

私のスキーマは次のようになります。

var userSchema = new Schema({ 
    local: { 
    email: String, 
    password: String 
    }, 
    facebook: { 
    id: String, 
    token: String, 
    email: String, 
    name: String 
    }, 
    name: String, 
    about: String, 
    images: [{ 
    id: Schema.ObjectId, 
    link: String, 
    main: Boolean 
    }] 
}); 
+0

あなたは完全なオブジェクトまたは指定されたIDを持つだけの画像に興味はありますか? – adebasi

+0

私は渡されたIDを持つただ1つのイメージで完全なオブジェクトを優先します。 – user3888540

答えて

1

あなたは完全なオブジェクトに興味がある場合は、それは簡単なfindです:

.find({"facebook.id":"<id>", "images.id":<image-id>}) 

私は、結果の画像の配列を減らす方法はないと思います。あなたがこれを使用することができ、画像配列の単一の要素更新する

.update({"facebook.id":"<id>", "images.id":<image-id>}, {$set : {"images.$.main" :false} }); 
+0

それは私の問題です。私はちょうどその1つのイメージの1つのフィールドを更新する必要があり、そのイメージに到達する方法を知らない。他のどんなトゥルツですか?そして私は助けに感謝します。 – user3888540

+0

更新された投稿を表示 – adebasi

0
userSchema .find({facebook.id: "some ID",{ "images.id": { $in: [ id1, id2, ...idn] }} 

イメージがドキュメント内にあるので、あなたは、あなたがFacebookなどのいくつかの他のパラメータを送ることを覚えておいてください問い合わせる同じIDのしかしすべての時間を持つことができます.idまたはfacebook.emailをimage idと一緒に使用して検索します。さもなければ、あなたはイメージのために同じIDを保持することに決めただけなので、無関係かもしれないすべてを得ることになります。

関連する問題