如何在Mongoose中通过_id查找用户并验证钱包是否含BTC
问题分析与解决方法
你的代码不正确,原因是$in: ['btc']的匹配逻辑和你的数据结构不匹配:wallet是包含对象的数组,而非字符串数组,$in会尝试匹配数组中是否存在等于"btc"的元素,显然无法命中你的数据。
正确实现方法
要验证用户钱包中是否存在btc密钥,你可以使用MongoDB的$exists操作符,结合嵌套对象的点语法来查询:
const id = "6515a3cb181eafcdd26460ce"; const user = await users.findOne({ _id: id, "wallet.btc": { $exists: true } }); // 根据查询结果判断 if (user) { console.log("该用户钱包存在BTC密钥"); } else { console.log("该用户钱包不存在BTC密钥"); }
补充说明
"wallet.btc"是MongoDB的嵌套字段查询语法,用于检查wallet数组中是否有至少一个对象包含btc键- 如果需要进一步验证
btc的有效值(比如是否大于0),可以追加条件:const user = await users.findOne({ _id: id, "wallet.btc": { $exists: true, $gt: 0 } });
内容的提问来源于stack exchange,提问作者Alpha Andrianarivo
相关产品推荐
相关产品推荐

