【问题标题】:MongoDB store value in a variableMongoDB 将值存储在变量中
【发布时间】: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


    【解决方案1】:

    mongodb 中的“_id”属性是一个敏感问题... :),这是数据库存储文档 ID 的地方。与普通的关系数据库相反,这些 ID 不是增量整数,而是由 mongodb 本身创建的对象 ID。所以这个查询返回 undefined 因为“Space Opera”一开始就不可能是一个对象 ID,0 也不能。如果您提供更多代码,我将很乐意提供更多帮助。

    【讨论】:

    • 我添加了一些附加信息。
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多