0
でネストされたすべての文書を削除する方法:JS/MongoDBは:いくつかの主要な文書といくつかの子供たちがある私のMongoDBで指定された親のタイトル
{ _id: 'KZg2RgcnxdfYbAoog',
title: 'Article Sample',
type: 'articles' }
{ _id: 'YbAoogKZg2Rgcnxdf',
parent: 'KZg2RgcnxdfYbAoog' }
は、今私は、メインのタイトルを使用して、完全なデータセットを削除する必要があります資料。
私のアプローチは、まず、指定されたタイトル配列に一致するすべてのドキュメントを取得することです。これらのIDを使用して、このid
またはparent
のすべての文書を削除しようとしました。 しかし、このコードでは削除されません。 articles
は未定義のようです...
また、完全なコードは、この単純なタスクにとって非常に巨大に見えます。これは少しスマートにできますか?
MongoClient.connect(mongoUrl, function (err, db) {
expect(err).to.be.null
console.log('Connected successfully to server: ' + mongoUrl)
var articles = db.collection('articles')
var titleArray = ['Article Sample', 'Another sample']
articles.find({ title: { $in: titleArray } }).toArray((err, docs) => {
if (err) console.warn(err)
if (docs && docs.length > 0) {
docs.forEach(doc => {
articles.remove(
{
$or: [
{ _id: doc._id },
{ parent: doc._id },
{ main: doc._id }
]
},
(err, numberOfRemovedDocs) => {
console.log(numberOfRemovedDocs)
}
)
})
}
})
db.close()
})