は私が文書の収集、教師と生徒の間で議論を管理する各1を持っていると言うマッチmessage
。
teacherLastMessage
フィールドまたはstudentLastMessage
フィールドをユーザーのどちらに応じて更新するかを探しています。フィールドに基づいて条件付きの更新、マッチを作るためにはMongoを伝える方法はあり条件付きのアップデートは、
return Promise.all([
// if user is teacher, set teacherLastMessage
db.collection('discussions').findOneAndUpdate({
teacherId: userId,
_id
}, {
$set: {
teacherLastMessage: message
}
}, {
returnOriginal: false
}),
// if user is student, set studentLastMessage
db.collection('discussions').findOneAndUpdate({
studentId: userId,
_id
}, {
$set: {
studentLastMessage: message
}
}, {
returnOriginal: false
})
]).then((results) => {
results = results.filter((result) => result.value);
if (!results.length) {
throw new Error('No matching document');
}
return results[0].value;
});
:現時点では
、私はこれを持っていますか?このようなもの:
db.collection('discussions').findOneAndUpdate({
$or: [{
teacherId: userId
}, {
studentId: userId
}],
_id
}, {
$set: {
// if field matched was studentId, set studentLastMessage
// if field matched was teacherId, set teacherLastMessage
}
});
確かにmongo 3.2では可能でしょうか?
これは不可能に一つだけのクエリを使用してこれを行うには - だから
は、その後、私はこのスニペット作ってあげる$set{updateObj}
のために、あなたの更新を渡します。データ構造を変更する必要があります。教師と学生のために別々のオブジェクトを作成します。この方法では、1つのクエリを使用して更新することができます。 – Shrabanee