删除一个集合中与mongodb

时间:2015-07-09 12:44:45

标签: mongodb mongodb-query

我有两个收藏:专辑和图片......

db.albums.findOne().pretty()
{
    "_id" : 67,
    "images" : [
        52901,
        57320,
        96342,
        99705
    ]
}

对于图片:

db.images.findOne().pretty()
{ 
    "_id" : 99705, 
    "height" : 480, 
    "width" : 640,
    "tags" : [ "dogs", "kittens", "work" ]
}

每张图片都应该在相册中。图片ID会出现在相册集合中,如示例所示。但是有些图片没有专辑。我想单独删除这些图像。任何人都可以帮我怎么做

1 个答案:

答案 0 :(得分:0)

使用distinct计算distinct集合中的所有images albums,如下所示:

var allDistinctImagesFromAlbums = db.albums.distinct("images")

所以allDistinctImagesFromAlbums包含所有images的数组列表 [52901, 57320, 96342, 99705]

现在将上面的变量用于images集合,_id $nin数组如上所示:

db.images.remove({"_id":{"$nin":allDistinctImagesFromAlbums}})

上面的查询删除了albums集合中未提及的所有图像文档。