如何在列表的同一元素中过滤所有颜色为蓝色且尺寸为50的userID?只应输出用户1347。
{
"userId": "12347",
"settings": [
{ name: "SettingA", color: "blue", size: 10 },
{ name: "SettingB", color: "blue", size: 20 },
{ name: "SettingC", color: "green", size: 50 }
],
}
{
"userId": "1347",
"settings": [
{ name: "SettingA", color: "blue", size: 10 },
{ name: "SettingB", color: "blue", size: 50 },
{ name: "SettingC", color: "green", size: 20 }
]
}
如果可以使用$ elemMatch完成此操作,我如何将其包含在以下查询中,假设以下两个元素需要位于同一列表中:{" rounds.round_values.decision" :" Fold"}, {" rounds.round_values.gameStage" :" PreFlop"}
我尝试了这个查询,但它没有产生任何结果。我读过因为elemMatch deosnt'在预测中工作。但是,我怎么能告诉$ filter只返回满足$ elemmMatch条件的对象?
db.games.aggregate([
{ $match: { $and: [
{ Template: "PPStrategy4016" },
{ FinalOutcome: "Lost" }]
}},
{ $elemMatch: {
{ "rounds.round_values.decision" : "Fold"},
{ "rounds.round_values.gameStage" : "PreFlop"}
} },
{
$group: {
_id: null,
total: {
$sum: "$FinalFundsChange"
}
}
} ] )
答案 0 :(得分:0)
根据给定的文档,查询如下:
db.games.aggregate(
{$unwind : "$settings"},
{$match: {"settings.color" : "blue", "settings.size" : 50}} ,
{$group: {_id: null, total: {$sum: "$settings.size"}}} )
如果您难以将其转换为自己的域名,请提供您域中的一些示例文档。