arrays - 在数组字段中查找匹配项

标签 arrays node.js mongodb mongoose

在我的图像共享应用程序中,您可以创建相册并向其中添加图像。当一张图片从网站上删除时,它也应该从存储图片引用(名称、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');
            }
        });
    });
});

最佳答案

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

你想在 reaching into the array 时使用相等.

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

这表示找到 imageName 为 theImage 的文档,因此这将返回在其 imageName 数组中包含此图像的相册(或相册,如果一张图片可以在多个相册中)。

关于arrays - 在数组字段中查找匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884948/

相关文章:

javascript - 处理需要 10 秒以上的 axios 请求

node.js - 这是一个 Node 数据库问题。我包括用户模型,但它不包括在结果中

c++ - MongoDb 使用 C++ 驱动程序创建稀疏索引

mongodb - Mongo TTL 与 Capped 集合的效率对比

javascript - 在 React 前端渲染 Node.js 服务器数据

mongodb 的 $inc,增加一个不存在的字段(upsert case)

c - 优化贝塞尔滤波器的实现

c# - 将字符串拆分为 2 个数组的有效方法是什么

arrays - 在 Codeigniter 中将数组保存到 session

c# - 嵌套的 foreach 循环将 DirectoryInfo.GetDirectories 和 GetFiles 添加到数组?