我在集合中有多个文档,每个文档中都有一个长字符串,我想要一次检索一个文档,除了长字符串之外我没有文档中的任何内容,我该如何检索它?
我使用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);
}
})
答案 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)
})