【问题标题】:Mongoose: How to query field in documentMongoose:如何查询文档中的字段
【发布时间】:2017-04-26 07:47:59
【问题描述】:

我有一个包含一系列问题的文档,我希望每次提交按钮时都运行该函数,请求问题数组中的下一个问题,基本上是它的测验应用程序,我想在其中显示保存在数据库中的问题文档和所有问题都保存在数组中

我结构化数据的方式是否正确,即数组和单个文档中的所有问题

我的问题是如何检索保存在单个文档中的数组中的每个问题,我做了这样的事情:

var schema = new mongoose.Schema({
question : []
})
var quizz = mongoose.model('Quiz', schema );

var firstDoc = new quizz({
question: ['question 1', 'question 2', 'question 3', 'question 4']
})

firstDoc.save(function(err, res){
 if(err){
   console.log("error occured while saving document object " + err )
 }else{
   console.log("saved data");
 }
})

我是否必须创建一些 ID 来识别数组中的每个问题,以便我可以根据 ID 提取问题,或者这就是我正在做的事情

【问题讨论】:

  • 问题是什么?很难理解你需要什么。
  • 是否需要在数组中查找例如question 1的文档?
  • 是的,我也不知道我的结构是否像数组中单个文档中的所有问题一样正确
  • 我只有包含数组中所有问题的文档
  • 我想在每次从数组发出请求时检索一个问题

标签: node.js mongodb express mongoose mongoose-schema


【解决方案1】:

要查看数组中具有特定值的文档,您必须使用$in

quizz.findOne({ question: {$in: ['question 1'] }, function (err, doc) {
   console.log(doc);
});

为您的目的正确的架构应该是这样的:

var QuestionSchema = new mongoose.Schema({
   question: String
});

然后您可以使用架构为您的每个问题创建一个文档

var firstQuestion = new quizz({
   question: 'question 1'
});
var secondQuestion = new quizz({
   question: 'question 2'
});

等等……

【讨论】:

  • 如何识别“问题 1”,因为问题 1 是多行的整个问题,所以我必须在查询时写下整个问题?
  • 为什么会有这样的架构?我希望每个文档都有一个问题,而不是单个文档中的一系列问题。
  • 什么是结构
  • 我是否应该保存每个文档,如果有 10 个问题文档我必须保存 10 次?我将如何检索?基于?
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 2015-10-04
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多