我有一个具有以下格式的MongoDB集合:
{
"_id" : ObjectId("5b6b112d1bbd972848b97df4"),
"team" : "Switzerland",
"Game" : [
{
"City" : "Nizhny Novgorod",
"T2N" : "Costa Rica",
"T1N" : "Switzerland",
"ST" : "Nizhny Novgorod Stadium",
"T1S" : "2",
"Date" : "6/27/2018",
"T2S" : "2"
},
{
"City" : "Kaliningrad",
"T2N" : "Serbia",
"T1N" : "Switzerland",
"ST" : "Kaliningrad Stadium",
"T1S" : "2",
"Date" : "6/22/2018",
"T2S" : "1"
},
{
"City" : "Rostov-on-Don",
"T2N" : "Brazil",
"T1N" : "Switzerland",
"ST" : "Rostov Arena",
"T1S" : "1",
"Date" : "6/17/2018",
}]
}
我正在尝试运行以下查询: db.test.find({“ Game.T1S”:{$ gte:3}})。pretty() 但这会以以下格式返回数据:
{
"_id" : ObjectId("5b6b112d1bbd972848b97df4"),
"team" : "Switzerland",
"Game" : [
{
"City" : "Nizhny Novgorod",
"T2N" : "Costa Rica",
"T1N" : "Switzerland",
"ST" : "Nizhny Novgorod Stadium",
"T1S" : "2",
"Date" : "6/27/2018",
"T2S" : "2"
},
{
"City" : "Kaliningrad",
"T2N" : "Serbia",
"T1N" : "Switzerland",
"ST" : "Kaliningrad Stadium",
"T1S" : "2",
"Date" : "6/22/2018",
"T2S" : "1"
},
{
"City" : "Rostov-on-Don",
"T2N" : "Brazil",
"T1N" : "Switzerland",
"ST" : "Rostov Arena",
"T1S" : "1",
"T2S" : "3"
"Date" : "6/17/2018",
}]
}
我希望结果公正
db.test.find({“ Game.T1S”:{$ gte:3}})。pretty() 但这会以以下格式返回数据:
{
"_id" : ObjectId("5b6b112d1bbd972848b97df4"),
"team" : "Switzerland",
"Game" : [
{
"City" : "Rostov-on-Don",
"T2N" : "Brazil",
"T1N" : "Switzerland",
"ST" : "Rostov Arena",
"T1S" : "1",
"T2S" : "3"
"Date" : "6/17/2018",
}]
}
这是游戏的结果应仅包含T1S> = 3的记录,而不包含第一条输出中的其他记录。有什么办法可以实现?
答案 0 :(得分:0)
尝试一下:
db.collection.find({
"Game.T1S": {
$gte: "2"
}
}, {
"team": 1,
"Game.$": 1
})
想法是使用查找projection
和$ projection operator