gpt4 book ai didi

node.js - 错误 'Cannot apply $pull to a non-array value'

转载 作者:太空宇宙 更新时间:2023-11-03 23:25:56 47 4
gpt4 key购买 nike

db.collection(USERDETAILS_COLLECTION).findOneAndUpdate({
"emailVerificationHistory.verifyCode": mailCode
}, {
'$pull': {
"emailVerificationHistory.$.verifyCode": mailCode
}
},
function(err, pullData) {
if (err) {
console.log(err);
} else {
res.send({
msg: 'User Verified Succesfully',
status: 1
});
}
});

当我执行上述代码时,出现以下错误。

name: 'MongoError',
message: 'Cannot apply $pull to a non-array value',
ok: 0,
errmsg: 'Cannot apply $pull to a non-array value',
code: 16837,

下面是我的 MongoDB 对象。

{
"_id" : ObjectId("593270b8bc98ea235cfaf68f"),
"username" : "parengalhisham@gmail.com",
"roleId" : 3,
"userId" : ObjectId("593270b8bc98ea235cfaf68e"),
"profile" : {
"firstName" : "Hisham",
"lastName" : "Mubarak"
},
"activeFlag" : 1,
"authType" : [
"facebook"
],
"emailVerified" : false,
"emailVerificationHistory" : [
{
"email" : "parengalhisham@gmail.com",
"verifyCode" : "59327155480b791b7845dfd7",
"requestDate" : ISODate("2017-06-03T08:20:37.156Z"),
"verifiedDate" : ISODate("2017-06-03T10:31:53.720Z")
}
]
}

如何使用 verifyCode 搜索 emailVerificationHistory 数组并仅从数组内的第一个对象中删除 verifyCode?感谢您提前提供的帮助。

最佳答案

您对 $pull 的使用情况不正确的是:

db.collection(USERDETAILS_COLLECTION).findOneAndUpdate(
{ "emailVerificationHistory.verifyCode":mailCode },
{'$pull':{ "emailVerificationHistory": { "verifyCode": mailCode } },
function(err,pullData) {
if(err) {
console.log(err);
} else {
res.send({msg: 'User Verified Succesfully', status: 1});
}
}
);

$pull更新运算符本身就像一个查询。因此它需要一个条件并从数组中“拉出”匹配的元素。

因此,虽然使用选择查询来匹配数组中的元素是一种很好的做法,但您不要对元素使用位置 $ 运算符,而是提供数组本身。

关于node.js - 错误 'Cannot apply $pull to a non-array value',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44343175/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com