我在 MongoDB 数据库中有两个集合:“照片”和“相册”。
相册集合中的每个文档都包含一个“images”属性,其中包含一个 id 数组,这些 id 是返回照片集合的键。
使用 Node.js 驱动程序,我需要遍历专辑集合并删除孤立图像,即不在任何专辑中的图像。
我似乎无法弄清楚...这是我编写的代码
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/photosharing', function(err, db) {
if(err) throw err;
var images = db.collection('images');
var albums = db.collection('albums');
var myArray = [];
db.albums.count({}, function(err, count) {
if(err) throw err;
console.dir("start length of albums is " + count);
});
images.find({}).toArray(function(err, docs) {
if(err) throw err;
for (var i=1; i<=docs.length; i++) {
albums.count({"images": i}, function(err, count) {
if(err) throw err;
if ( count == 0 ) {
images.remove({images.find({ "_id": i })})
}
});
};
});
db.albums.count({}, function(err, count) {
if(err) throw err;
console.dir("end length of albums is " + count);
});
db.close();
});