当前位置: 首页 > 知识库问答 >
问题:

指向同一集合中另一个子文档的子文档的猫鼬模型是什么

南门朗
2023-03-14

我有一个结构如下的文档,有两种类型的子文档。第二个子文档指的是一些第一个子文档,但不是全部

var snippet = new schema{
 data:string,
 questions:[question],
 answers:[answer]
};

var question = new schema{
  questiontext:string
}
var answers = new schema{
   answertext :string,
   questionsAnswered : []
}

这里的“答案文本”需要链接到多个问题,因为一个答案可以对多个问题有效。

在答案模式中,我应该如何存储问题。我不想再次存储问题对象数据,因为它将是重复的数据,并且如果一些问题被修改,那么它需要在问题中被修改回答子文档。所以基本上我想存储问题的_id回答。

猫鼬中回答模式的语法是什么?目前我有空数组,但不确定这是否是好的方法

共有1个答案

韩彦君
2023-03-14

这个答案来得有点晚,但万一有人需要解决方案。。。

你可以照你所做的去做。但是,我认为你在寻找这样的东西:

var mongoose = require('mongoose'),
  Schema = mongoose.Schema;

var question = new Schema({
  questionText: String
});

var answers = new Schema ({
  answertext: String,
  questionsAnswered : [{
    type: Schema.ObjectId,
    ref: 'question'
  }]
});

这将允许您存储引用存储的问题文档的ObjectIds数组。严格来说,您不需要使用ObjectId,而是可以将_ids存储为Strings,如果您有理由这样做的话。

...
questionsAnswered : [String]
...

但是,您必须自己处理逻辑,将objectid转换为字符串,反之亦然。因此,您可以将问题的_id值存储在[]数组中,但同样,您需要自己处理任何逻辑/转换。

 类似资料:
  • 问题内容: 我在子文档的Mongoose中尝试执行findOne查询,但运气不佳… 我的架构如下所示: 我只需要从我使用此查询的文档中查找用户的电子邮件 任何帮助,将不胜感激! 问题答案: 您缺少对象的级别,因此您的代码需要更改为以下内容:

  • 问题内容: 我对在我的主模式中使用子文档和更深层的优缺点感到好奇: 要么 我目前在各处使用子文档,但主要是想知道性能或查询我可能遇到的问题。 问题答案: 根据文档,它是完全一样的。但是,使用Schema也会添加一个字段(只要您没有禁用该字段),并且大概会使用更多资源来跟踪子文档。 备用声明语法 v3中的新增功能 如果不需要访问子文档架构实例,则还可以通过简单地传递对象文字来声明子文档[…]

  • 问题内容: 我的文件 夹Folder 具有以下架构: 因此,对于每个页面,我可以拥有许多权限。在CMS中,有一个面板,其中列出了所有文件夹及其权限。管理员可以编辑一个权限并保存。 我可以很容易地用其权限数组保存整个 Folder 文档,其中只修改了一个权限。但是我不想保存所有文档(实际架构中包含更多字段),所以我这样做了: 但是问题是 烫发 总是 不确定的 !我试图以这种方式“静态地”获取许可:

  • 考虑以下Firestore结构: 收藏 现在,我想查询宠物满足某些条件的人。例如,拥有两只以上宠物的人,或者拥有一只名为“ABC”的宠物的人。 这可能吗?

  • 对于那些使用Firebase(FiRecovery)的人来说,您可以拥有一个包含文档的集合,其中每个文档都有一个id,然后一个集合可以保存一个子集合(相当于嵌入文档作为文档数组作为属性)。 然后,这个子集合可以容纳许多文档,而每个文档都有一个id。 在Firestore中,子集合是延迟加载的。 它将获取该集合上的文档,但如果有一个或多个子集合,它将不会检索该集合,除非特别转到该路径。e、 g:集合

  • 问题内容: 我刚刚陷入这个问题。我有两种猫鼬模式: 问题是,如何从每个父文档中获取所有子文档(在这种情况下为对象)?假设我有一些数据: 我想通过一个查询来检索所有18岁以上的孩子。每个答案将不胜感激,谢谢! 问题答案: 您可以在最新的MongoDB版本中用作查询投影运算符。从mongo shell: 这会从数组中过滤掉较小的儿童文档: 如您所见,子代仍在其父文档中分组。MongoDB查询返回集合中