【发布时间】:2021-03-10 08:30:23
【问题描述】:
我正在使用 mongodb 的 vscode 扩展。我试图将值存储在一个变量中,它返回未定义。查询工作正常。
var obj = db.categories.find({_id : "Space Opera"}, {_id : 0, parent : 1}) // undefined
--- 编辑 ---
categories 是表示图形数据结构的文档
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: [],
},
]);
Books 集合对象示例如下:
{
ISBN: "0006",
title: "Book6",
pages: NumberInt("135"),
price: NumberDecimal("170.5"),
copies: NumberInt("10"),
language: "russian",
author: ["Author1", "Author2", "Author3"],
category: ["Science Fiction & Fantasy"],
genre: ["Genre-6", "Genre-0"],
character: ["Character-4", "Character-3"],
}
我想像这样存储一个变量:
var category = ["Space Opera"]
---另一个问题---
由于它是一个图形数据结构,并且“科幻”类别有 2 个父级,我想执行以下操作。
- 退出科幻小说并将所有书籍分配给父类别
我有以下代码适用于具有单个类别且该类别只有一个父级的书籍。不适用于科幻小说,我相信我需要一些条件来检查该类别是否有多个父母并取决于我想要的类别,更新类别。
db.books.aggregate([
{ $match: { category: "Space Opera" } },
{
$lookup:
{
from: "categories",
pipeline: [
{ $match: { _id: "Space Opera" } },
{ $project: { _id: 0, parent: { $first: "$parent" } } }
],
as: "category"
}
},
{ $set: { category: { $first: "$category.parent" } } }
]).toArray().forEach(function (doc) {
db.books.updateOne({ _id: doc._id }, { $set: { category: [doc.category] } });
})
【问题讨论】:
标签: javascript mongodb nosql