我有两个收藏:专辑和图片......
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会出现在相册集合中,如示例所示。但是有些图片没有专辑。我想单独删除这些图像。任何人都可以帮我怎么做
答案 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
集合中未提及的所有图像文档。