gpt4 book ai didi

Mongodb点符号通配符?

转载 作者:IT老高 更新时间:2023-10-28 13:04:47 30 4
gpt4 key购买 nike

我有一组用户,每个用户都可能订阅一项或多项服务。每个服务都有一些元数据,包括用户对该服务的信用数量。

如果我无法知道服务对象的键是什么,我如何才能找到所有对某些服务的积分少于 50 的用户对象?

从概念上讲,它会是这样的,这是行不通的:

db.users.find({services.*.credits : {$lt : 50}})

用户集合:

   {
_id: 4f0ea25072139e4d2000001f,
services : {
a : { credits : 100, score : 2000 },
b : { credits : 200, score : 300 },
c : { credits : 10, score : 1300 }
}
},
{
_id: 4f0ea25072139e4d2000001f,
services : {
f : { credits : 68, score : 14 },
q : { credits : 1000, score : 102 },
z : { credits : 59, score : 352 }
}
}

我想做的另一个例子,如果这里不清楚,在这里解释:http://www.mongodb.org/display/DOCS/Advanced+Queries#comment-346075854

最佳答案

这是对您问题的实际答案。

如果您无法知道服务对象的键是什么,如何找到所有对某项服务的积分少于 50 的用户对象。

使用 $where 查询:

db.users.find({
$where: function () {
for (var index in this.services)
if (this.services[index].credits < 50)
return this;
}
});

关于Mongodb点符号通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840342/

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