在数组字段中查找匹配项

在我的图像共享应用程序中,您可以创build相册并向其添加图像。 从网站上删除图像时,也应该从存储对图像(名称,ID)的引用的专辑中删除。

我需要帮助的是find哪些相册存储了即将被删除的图像(引用)。

在下面的路线是我到目前为止,但我得到一个错误的查询。 我已经检查了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); 

删除图像的path:

 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'); } }); }); }); 

db.collection.find( { field : { $in : array } } ); 不是你想要的语法。 这就是说:“find我的文档,在这个字段中有一个列表值,我将给你一个数组。

你想在到达数组时使用相等性。

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

这就是说find我imageName是图像的文档,所以这将返回相册(或相册,如果图片可以在多个相册),它的imageName数组中包含此图像。