Mongodb 将子文档移动到另一个文档
我正在为mongodb数据库建模,该数据库将包含类别和文章 最常见的用途是通过类别列出文章,因此我计划将这些文章作为类别的子文档: //db.categories.find() 有时,我可能会将文章从一个类别转移到另一个类别 在关系数据库中,我应该只更新一个外键,但是在上面的例子中,如何将一篇文章移动到另一个类别 一些细节:Mongodb 将子文档移动到另一个文档,mongodb,Mongodb,我正在为mongodb数据库建模,该数据库将包含类别和文章 最常见的用途是通过类别列出文章,因此我计划将这些文章作为类别的子文档: //db.categories.find() 有时,我可能会将文章从一个类别转移到另一个类别 在关系数据库中,我应该只更新一个外键,但是在上面的例子中,如何将一篇文章移动到另一个类别 一些细节: 最好是内部ObjectId保持不变。但这不是强制性的 文章还可能包含子文档,如果是这样,则它们必须在移动时出现 您需要首先获取文章,然后从当前类别中删除(拉取)文章,然后
- 最好是内部
保持不变。但这不是强制性的ObjectId
- 文章还可能包含子文档,如果是这样,则它们必须在移动时出现
有关$pull和$push的更多信息。除了在阵列上操作之外,您在这里执行的操作与
$set
和$unset
操作没有什么不同。我认为值得注意的是:A.一旦文章被拉入,它的数据就会被删除;B.拉入只是手动插入到数组中。我可以想象OP想要通过编程来移动文章,而不是复制粘贴mongo插件。不过,我可能弄错了。
[{
"id": 01,
"name": "Some category",
"articles: [{
"article_id": 01,
"title": "",
"content": ""
}]
}]
db.categories.update(
{"id" : 01, "articles.article_id" : 01}, // query
{"$pull" : {"articles" : {"article_id" : 01}}} // pull
)
db.categories.update(
{"id" : 02}, // query
{"$push" : {"articles" : { // push
"article_id": 01,
"title": "",
"content": ""
}
}
}
)