Maison > Questions et réponses > le corps du texte
现在的数据结构是这样的
course:{
name:String,
chapter: [{
name: String,
knowledge: [{
name: String,
exam: [{
name: String,
}]
}]
}]
}
要想修改knowledge.name,修改语句该怎么写?之前在修改chapter.name时我是这样写的
Course.update({
"chapter._id": req.body.id
}, {
$set: {
"chapter.$.name": name, //名称
}
})
.exec(function(err, num) {
});
不知道在修改第三级嵌套文档时,$定位符改怎么使用。
大家讲道理2017-04-24 16:01:39
En fait, c'est compliqué Requêtes imbriquées, modifications imbriquées, etc. Si vous trouvez des nœuds couche par couche, l'efficacité n'est pas très élevée.
Les bases de données de documents, pour parler franchement, sont toujours une chaîne de chaînes dans un format de type JSON, quelle que soit la profondeur de l'imbrication.
Le moyen le plus rapide et le plus direct est le suivant :
json
db.term.update({"_id" : ObjectId("54c1a899eb21ac9c995d3eb2")}, {$set:{ "_id" : ObjectId("54c1a899eb21ac9c995d3eb2"), "course" : { "name" : "String", "chapter" : [ { "name" : "String", "knowledge" : [ { "name" : "原来如此", "exam" : [ { "name" : "String" } ] } ] } ] } }})
Assurez-vous simplement que votre programme reste inchangé. Recherchez d'abord les résultats, modifiez uniquement le nom de la connaissance, puis mettez à jour.
Lorsqu'une opération de base de données semble délicate, gênante et inefficace, vous devez regarder en arrière et réfléchir à la possibilité d'améliorer la conception structurelle de la base de données. Cela s'applique à la fois aux bases de données relationnelles et non relationnelles. http://www.cnblogs.com/mokafamily/p/4102829.html, vous pouvez consulter la section "1. Normalisation et dénormalisation" dans cet article