gpt4 book ai didi

node.js - 如何在 mongoose 中使用一组值查询一组对象?

转载 作者:行者123 更新时间:2023-12-04 09:32:32 26 4
gpt4 key购买 nike

我有一个这样的架构

const rankSchema = new Schema(
{
rank: { type: Object, default: {} },
lastUpdated: { type: Date, default: Date.now() },
},
{ minimize: false }
);
我的数据库有一个对象“等级”,里面有许多其他对象,就像这样。
rank: {
Person1: { Stat1: 2, Stat2: 0, Stat3: 0, Stat4: 2, Stat5: 4 },
Person2: { Stat1: 4, Stat2: 0, Stat3: 0, Stat4: 2, Stat5: 2 },
Person3: { Stat1: 1, Stat2: 0, Stat3: 0, Stat4: 2, Stat5: 1 },
Person4: { Stat1: 2, Stat2: 0, Stat3: 0, Stat4: 2, Stat5: 3 }
}
现在我有一个包含其中一些人的字符串数组 ['Person1', 'Person2']我希望能够找到该数组中的所有人员对象并返回他们的统计信息。
所以基本上使用字符串数组后的最终输出将是
Person1: { Stat1: 2, Stat2: 0, Stat3: 0, Stat4: 2, Stat5: 4 },
Person2: { Stat1: 4, Stat2: 0, Stat3: 0, Stat4: 2, Stat5: 2 }
我尝试使用 $in和各种不同的查询,但似乎没有任何效果,我很难过。
谢谢

最佳答案

您可以使用 $objectToArray 的组合和 $arrayToObject通过动态字段名称过滤您的对象,但如果您在构建查询时知道您的参数,那么使用常规 .find() 会更容易并应用投影:

db.collection.find({},{ "rank.Person1": 1,  "rank.Person2": 1})

let input = ['Person1', 'Person2'];
let entries = input.map(p => ([`rank.${p}`, 1]))
let projection = Object.fromEntries(entries);
console.log(projection);

Mongo Playground

关于node.js - 如何在 mongoose 中使用一组值查询一组对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62772021/

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