const schema = new mongoose.Schema({
reputationHistory: [ reputationHistorySchema ],
});
const reputationHistorySchema = new mongoose.Schema({
isBid: { type: Boolean, default: false, required: true },
isResult: { type: Boolean, default: false, required: true },
});
这是它的一个例子:
[{
reputationHistory: [{
isBid: true,
isResult: false,
}, {
isBid: false,
isResult: true,
}]
}, {
reputationHistory: [{
isBid: true,
isResult: false,
}, {
isBid: false,
isResult: true,
}]
}]
isBid == true
,那么我想要
reason
是“预言”。否则,
原因
[{
reputationHistory: [{
isBid: true,
isResult: false,
reason: "Prediction",
}, {
isBid: false,
isResult: true,
reason: "Result",
}]
}, {
reputationHistory: [{
isBid: true,
isResult: false,
reason: "Prediction",
}, {
isBid: false,
isResult: true,
reason: "Result",
}]
}]
以下是我的尝试:
db.users.update(
{},
{
$set: {
"reputationHistory.$[].reason": {
$cond: { if: { "reputationHistory.$[].isBid": true }, then: "Prediction", else: "Result" }
}
}
},
{ multi: true }
)
下面是我收到的错误:
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 16837,
"errmsg" : "cannot use the part (reputationHistory of reputationHistory.$[].reason) to traverse the element ({reputationHistory: [ { isBid: true, isResult: false, _id: ObjectId('5e55042c097bca0004647e18') } ]})"
}
})