【发布时间】:2021-03-10 06:59:59
【问题描述】:
我有两个收藏:书籍和类别。类别集合表示一个树结构,使它们使用父级和子级嵌套类别。
这本书可以有多个类别并将它们存储在一个数组中。
示例:图书有类别,我想将其停用并将其设置为父类别。
这就是类别集合的填充方式。
db.categories.insertMany([
{
_id: "Space Opera",
ancestors: ["Science Fiction", "Fiction", "Science Fiction & Fantasy"],
parent: ["Science Fiction"],
},
{
_id: "Dystopian",
ancestors: ["Science Fiction", "Fiction", "Science Fiction & Fantasy"],
parent: ["Science Fiction"],
},
{
_id: "Cyberpunk",
ancestors: ["Science Fiction", "Fiction", "Science Fiction & Fantasy"],
parent: ["Science Fiction"],
},
{
_id: "Science Fiction",
ancestors: ["Fiction", "Science Fiction & Fantasy"],
parent: ["Fiction", "Science Fiction & Fantasy"],
},
{
_id: "Fantasy",
ancestors: ["Science Fiction & Fantasy"],
parent: ["Science Fiction & Fantasy"],
},
{
_id: "Science Fiction & Fantasy",
ancestors: [],
parent: [],
},
{
_id: "Fiction",
ancestors: [],
parent: [],
},
]);
另外,我如何查询这个并只获取值“科幻小说”(注意它存储在一个数组中)?
db.categories.find({_id : "Space Opera"}, {_id : 0, parent : 1})[0].parent // Did not work
db.categories.find({_id : "Space Opera"}, {_id : 0, parent : 1}) // find parent
// result
[
{
"parent": [
"Science Fiction"
]
}
]
db.books.update(
{title : "Book1"},
{$set : {category : [**PARENT CATEGORY**]}}
)
我相信我可以在 books.update() 中使用上面的代码
我可以将它存储在一个单独的变量中,但在 vscode 中它给了我未定义的。 内部查询并没有像前面所说的那样给我正确的值,但我想你明白了。
db.books.update(
{title : "Book1"},
{$set : {category : [db.categories.find({_id : "Space Opera"}, {_id : 0, parent : 1})]}}
)
【问题讨论】:
标签: mongodb collections nosql