我有以下 mongodb 结构...
[
{
track: 'Newcastle',
time: '17:30',
date: '22/04/2022',
bookmakers: [
{
bookmaker: 'Coral',
runners: [
{
runner: 'John',
running: true,
odds: 3.2
},
...
]
},
...
]
},
...
]
我试图找到过滤每个文档的博彩公司数组以仅包含与指定博彩公司值匹配的对象,例如:
{ 'bookmakers.bookmaker': { $in: ['Coral', 'Bet365'] } }
目前,我正在使用以下 mongodb 查询仅选择指定的博彩公司,但是我需要在文件被“$ unwind”分隔后将它们重新组合在一起,有没有办法可以做这使用 $group?
await HorseRacingOdds.aggregate([
{ $unwind: "$bookmakers" },
{
$group: {
_id: "$_id",
bookmakers: "$bookmakers"
}
},
{
$project: {
"_id": 0,
"__v": 0,
"lastUpdate": 0
}
}
])
$addFields
一个平原怎么样$filter
?
db.collection.aggregate([
{
"$addFields": {
"bookmakers": {
"$filter": {
"input": "$bookmakers",
"as": "b",
"cond": {
"$in": [
"$$b.bookmaker",
[
"Coral",
"Bet365"
]
]
}
}
}
}
},
{
$project: {
"_id": 0,
"__v": 0,
"lastUpdate": 0
}
}
])
这是Mongo游乐场供您参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句