gpt4 book ai didi

javascript - MongoDB 只打印一个集合的一个值。 JavaScript

转载 作者:行者123 更新时间:2023-12-05 05:51:21 24 4
gpt4 key购买 nike

我在使用 MongoDB 控制台时遇到问题。只记录集合中的一个数据。我已经搜索了无数关于此的主题,但没有一个完全符合我的要求。我想从我的 mongoose 数据库中获取一个 number 数据。 (我正在创建一个 discord.js 机器人)这是数据库的样子:

_id: 61bb8dc5a23c9a077066abf0
user: "soki#2400"
userId: "466270219132731392"
amount: 16
__v: 0

我想console.log() amount 的值。

现在这是我的代码:

console.log(giftsSchema.find({"_id": 0},{"user": msg.author.tag},{"userId": msg.author.id}).amount);

所以我想要它打印的是:

16

但是它打印

undefined

最佳答案

我认为您的意思是搜索两个字段 useruserId。你应该使用这个:

giftsSchema.findOne(
{"user": msg.author.tag, "userId": msg.author.id}, // query
function (err, user) {
console.log(user.amount);
});

如果您想使用投影以便仅返回金额字段,请提供第二个参数,其中包含您想要的字段 1 而不需要 0。

giftsSchema.findOne(
{"user": msg.author.tag, "userId": msg.author.id}, // query
{_id: 0, amount: 1}, // projection
function (err, user) {
console.log(user.amount);
});

在您的示例中,您提供了 3 个参数 {"_id": 0}{"user": msg.author.tag}{ “用户 ID”:msg.author.id}。用find()第一个参数是查询/过滤器。因此,在您的代码中,您正在查询 _id = 0 的所有记录,我认为您不希望这样。第二个参数用于投影,您为此提供了一个无效对象,投影值应该像您的第一个参数一样仅为 1 或 0。第三个参数用于选项,在这里没有发挥作用。

您想通过将多个字段放在单个对象中来查询多个字段,例如 { field1 : value1, field2 : value2 } 。我也认为你只想要一个结果,所以你应该使用 findOne()相反,您只会得到一个对象而不是对象数组。

此外,Mongoose 是异步的。所以你应该制作一个 async 函数并为结果 await 。或者您可以提供一个回调函数,如我的示例所示。注意:在我的示例中,我不处理 err 情况。

关于javascript - MongoDB 只打印一个集合的一个值。 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70389326/

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