mongodb 将 object 添加到 object 的数组中
mongodb add objects into array of object
我正在尝试将元素添加到 object 的数组中,但是我在添加超过 1 个 object 时遇到问题。
这是我组的模型collection
const userSchema = mongoose.Schema({
name: {type: String, required: true},
password: {type: String, required: true},
description: {type: String, required: true},
scope: String,
groupTeacher: {
type: mongoose.Types.ObjectId,
ref: 'users',
},
quizzes:[
{
_id: mongoose.Types.ObjectId,
name: String,
tier: Number,
category: String,
questions:[
{
_id: mongoose.Types.ObjectId,
title: String,
question: String,
correctAnswer: String,
answer1: String,
answer2: String,
answer3: String,
answer4: String
}
],
usersAttempted:[
{
_id: {
type: mongoose.Types.ObjectId,
ref: 'users',
},
//userEmail: String,
correctAnswers: Number,
wrongAnswers: Number,
answers: [{
questionTitle: String,
correctAnswer: String,
usersAnswer: String
}]
我想将元素添加到 object 的 'usersAttempted' 数组中。
'answers' 部分有问题。问题是有很多问题的答案,但我只得到它添加 1 个问题的答案。
我就是这样做的。
const result = await groupsModel.updateOne({
"_id": groupId,
"quizzes._id": quizId,
"quizzes.usersAttempted._id": {$ne: userId}
},
{
$addToSet:{
"quizzes.$.usersAttempted":{
_id:userId,
correctAnswers: questionsCorrect,
wrongAnswers: questionsWrong,
answers:{
questionTitle: answers[0].questionTitle,
correctAnswer: answers[0].correctAnswer,
usersAnswer: answers[0].usersAnswer
}
}}});
Answers 是 objects
的数组
感谢您的帮助。
编辑:#1
小解释:
我有一个 object 数组,我想将其添加到“usersAttempted”,但我在添加超过 1 个答案时遇到问题。
编辑:#2
我设法将 object 的数组添加到 collection 中,但它是通过索引完成的。
const result = await groupsModel.updateOne({
"_id": groupId,
"quizzes._id": quizId,
"quizzes.usersAttempted._id": {$ne: userId}
},
{
$addToSet:{
"quizzes.$.usersAttempted":{
_id:userId,
correctAnswers: questionsCorrect,
wrongAnswers: questionsWrong,
answers:[{
questionTitle: answers[0].questionTitle,
correctAnswer: answers[0].correctAnswer,
usersAnswer: answers[0].usersAnswer
},
{
questionTitle: answers[1].questionTitle,
correctAnswer: answers[1].correctAnswer,
usersAnswer: answers[1].usersAnswer
},
{
questionTitle: answers[2].questionTitle,
correctAnswer: answers[2].correctAnswer,
usersAnswer: answers[2].usersAnswer
}]
}}});
现在我想找到一种添加 x 个 object 数组的方法。
当你尝试时会发生什么:
$addToSet:{
"quizzes.$.usersAttempted":{
_id:userId,
correctAnswers: questionsCorrect,
wrongAnswers: questionsWrong,
answers
}}});
在我看来,您将添加整个答案数组...
我正在尝试将元素添加到 object 的数组中,但是我在添加超过 1 个 object 时遇到问题。
这是我组的模型collection
const userSchema = mongoose.Schema({
name: {type: String, required: true},
password: {type: String, required: true},
description: {type: String, required: true},
scope: String,
groupTeacher: {
type: mongoose.Types.ObjectId,
ref: 'users',
},
quizzes:[
{
_id: mongoose.Types.ObjectId,
name: String,
tier: Number,
category: String,
questions:[
{
_id: mongoose.Types.ObjectId,
title: String,
question: String,
correctAnswer: String,
answer1: String,
answer2: String,
answer3: String,
answer4: String
}
],
usersAttempted:[
{
_id: {
type: mongoose.Types.ObjectId,
ref: 'users',
},
//userEmail: String,
correctAnswers: Number,
wrongAnswers: Number,
answers: [{
questionTitle: String,
correctAnswer: String,
usersAnswer: String
}]
我想将元素添加到 object 的 'usersAttempted' 数组中。 'answers' 部分有问题。问题是有很多问题的答案,但我只得到它添加 1 个问题的答案。
我就是这样做的。
const result = await groupsModel.updateOne({
"_id": groupId,
"quizzes._id": quizId,
"quizzes.usersAttempted._id": {$ne: userId}
},
{
$addToSet:{
"quizzes.$.usersAttempted":{
_id:userId,
correctAnswers: questionsCorrect,
wrongAnswers: questionsWrong,
answers:{
questionTitle: answers[0].questionTitle,
correctAnswer: answers[0].correctAnswer,
usersAnswer: answers[0].usersAnswer
}
}}});
Answers 是 objects
的数组感谢您的帮助。
编辑:#1
小解释:
我有一个 object 数组,我想将其添加到“usersAttempted”,但我在添加超过 1 个答案时遇到问题。
编辑:#2
我设法将 object 的数组添加到 collection 中,但它是通过索引完成的。
const result = await groupsModel.updateOne({
"_id": groupId,
"quizzes._id": quizId,
"quizzes.usersAttempted._id": {$ne: userId}
},
{
$addToSet:{
"quizzes.$.usersAttempted":{
_id:userId,
correctAnswers: questionsCorrect,
wrongAnswers: questionsWrong,
answers:[{
questionTitle: answers[0].questionTitle,
correctAnswer: answers[0].correctAnswer,
usersAnswer: answers[0].usersAnswer
},
{
questionTitle: answers[1].questionTitle,
correctAnswer: answers[1].correctAnswer,
usersAnswer: answers[1].usersAnswer
},
{
questionTitle: answers[2].questionTitle,
correctAnswer: answers[2].correctAnswer,
usersAnswer: answers[2].usersAnswer
}]
}}});
现在我想找到一种添加 x 个 object 数组的方法。
当你尝试时会发生什么:
$addToSet:{
"quizzes.$.usersAttempted":{
_id:userId,
correctAnswers: questionsCorrect,
wrongAnswers: questionsWrong,
answers
}}});
在我看来,您将添加整个答案数组...