如何在mongoose

时间:2016-12-11 10:39:32

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

我在集合中有多个文档,每个文档中都有一个长字符串,我想要一次检索一个文档,除了长字符串之外我没有文档中的任何内容,我该如何检索它?

我使用insertMany()在集合中插入了所有文档,这是我检索所有文档时的代码和输出

var schema = new mongoose.Schema({
question : String,
id: Number
})

var quizz = mongoose.model('Quiz', schema );

var firstDoc = new quizz({
question: 'question 1',
id: 1
})
var secondDoc = new quizz({
question: 'question 2',
id: 2

var question_data = [firstDoc, secondDoc];

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

quizz.findOne({id : '1'}, function(err, res){
if(err){
console.log(err)
}else{
  console.log(res);     
}
})

enter image description here

2 个答案:

答案 0 :(得分:0)

insertMany将返回为您已插入的文档创建的_id列表。然后,您可以根据_id单独提取每个文档

quizz.insertMany(question_data, function(err, res){
  if(err){
   console.log("error occured while saving document object " + err )
 }else{
   console.dir(res); // res has the _ids.
   console.log("saved data");
 }
})

http://mongoosejs.com/docs/api.html#model_Model.insertMany

或者,如果您总是想确保订购,可以在问题中添加一个序列列,和/或将所有问题放在一个问题中。

答案 1 :(得分:0)

如果您想对插入到集合中的文档的_id执行某些操作,请使用Kevin的答案,但如果您想稍后再对它们执行某些操作,则可以使用.find()返回你收集的所有文件。

quizz.find(function(err, docs) {
  //docs = array of all the docs in the collections
})

如果你想通过id特定:

quizz.findOne({_id: id},function(err, doc) {
  //doc = the specific doc
})

如果您想要强大的

quizz.findOne({question: "question 3"},function(err, doc) {
  //doc = the first (!!!) doc that have question in his `question` attribute 
})

或者如果您想要其中包含问题3的所有文档:

quizz.find({question: "question 3"},function(err, docs) {
  //docs = array with all the docs that have "question 3" there, (return array even if only 1 found) 
})