2012-06-04 28 views
13

私の画像共有アプリケーションでは、アルバムを作成して画像を追加することができます。画像がサイトから削除されると、画像への参照(名前、ID)を保存するアルバムから削除されます。配列フィールドでの一致の検索

私が助けが必要なことは、削除しようとしている画像(参照)が保存されているアルバムを見つけることです。

これまでのところ、私が試したことはありますが、クエリでエラーが発生します。私はMongoDBのドキュメントをチェックしましたし、構文は次のようになります。私のルートで

db.collection.find({ field : { $in : array } }); 

フィールドと配列が動作していないような場所を、切り替えました。

私は本当にいくつかの助けに感謝します。前もって感謝します!

私のモデルには、次のようになります。

var AlbumSchema = new Schema({ 
     title    : String, 
     imageName   : [String], <-- array the contains of images names 
     imageId   : [String] <-- array the contains of images id's 
}); 

modelObject.AlbumSchema = AlbumSchema; 
modelObject.Album = mongoose.model('Album', AlbumSchema); 

var ImageSchema = new Schema({ 
    name : String, 
    size : Number, 
    type : String 
}); 

modelObject.ImgSchema = ImgSchema; 
modelObject.Image = mongoose.model('Image', ImgSchema); 

画像を削除するためのルート:

app.get('/blog/delete/:id', function(req, res){ 

    model.ImagePost.findById(req.params.id, function (err, blog){ 

     var theImage = blog.name; 

     if (err) { 
      console.log(err); 
      // do something 
     } 

     var query = albumModel.Album.find({ imageName: { $in : theImage } }); 

     query.exec(function (err, albums) { 

      if (!albums) { 
       console.log(err); 
       // do something 

       blog.remove(function(err) { 
        console.log(err); 
        // do something 
       }); 

       res.redirect('/blogs'); 
      } 

      else { 
       // code for removing the image(s) in the albums 

       res.redirect('/blogs'); 
      } 
     }); 
    }); 
}); 

答えて

34

db.collection.find({ field : { $in : array } });あなたがしたい構文ではありません。それは「このフィールドにリストの値の1つが書かれている文書を私に見つけてください」というメッセージが表示されます。

reaching into the arrayの間は、等価を使用します。

db.collection.find({ imageName:theImage })

これは私にそのimagenameの配列にこの画像が含まれていimagenameのがtheImageである(画像が複数のアルバムにできるかどうか、アルバム)ので、これはアルバムを返します文書を見つけると言います。

+6

非常に良い答え(+1)。これは私が見つけた別のリンクhttp://docs.mongodb.org/manual/tutorial/query-documents/#match-an-array-element – Tom

+0

ありがとうTom ___;) – coiso

+1

リンクは現在死んでいます。 – Neta

関連する問題