烙印99
我也是初学一周这样,不知道还有不有更好的写法源数据db.test3.insert([{ "name" : "Wetpaint", "founded_year" : 2004, "funding_rounds" : [ { "raised_amount" : 5250000 }, { "raised_amount" : 9500000 }, { "raised_amount" : 25000000 }, { "raised_amount" : 9500000 }, { "raised_amount" : 25000000 } ]},{ "name" : "Wddddt", "founded_year" : 2004, "funding_rounds" : [ { "raised_amount" : 5250000 }, { "raised_amount" : 9500000 }, { "raised_amount" : 25000000 } ]},{ "name" : "Wcccct", "founded_year" : 2004, "funding_rounds" : [ { "raised_amount" : 520000 }, { "raised_amount" : 900000 }, { "raised_amount" : 2500000 }, { "raised_amount" : 950000 }, { "raised_amount" : 25000000 } ]},{ "name" : "Wetaaat", "founded_year" : 2004, "funding_rounds" : [ { "raised_amount" : 5250000 }, { "raised_amount" : 9500000 }, { "raised_amount" : 25000000 } ]}])sqldb.getCollection('test3').aggregate([{ $project: { 'name': 1, 'founded_year': 1, 'funding_rounds': 1, 'funding_rounds_size': {$size: '$funding_rounds'}, 'funding_rounds_avg': {$avg: '$funding_rounds.raised_amount'} }},{ $match: { 'founded_year': 2004, 'funding_rounds_size': {$gte: 5} }},{ $sort: { 'funding_rounds_avg': 1 }}])感觉这种查询方法会好点,虽然写的有点多,不过效率应该快点db.getCollection('test3').aggregate([{ $match: { 'founded_year': 2004 } },{ $project: { 'name': 1, 'founded_year': 1, 'funding_rounds': 1, 'funding_rounds_size': {$size: '$funding_rounds'}, 'funding_rounds_avg': {$avg: '$funding_rounds.raised_amount'} }},{ $match: { 'funding_rounds_size': {$gte: 5} }},{ $sort: { 'funding_rounds_avg': 1 }}])