bor*_*ork 3 mongodb aggregation-framework
我对 MongoDB 相当陌生,需要帮助根据另一个集合的数据对一个集合进行选择或某种左连接。
我有两个集合,动物和膳食,我想获取在某个日期(假设是 20171001)之后上次注册膳食的动物,以确定该动物是否仍然活跃。
collection animals:
{
name: mr floof,
id: 12345,
lastMeal: abcdef
},
{
name: pluto,
id: 6789,
lastMeal: ghijkl
}
collection meals:
{
id: abcdef,
created: 20171008,
name: carrots
},
{
id: ghijkl,
created: 20170918,
name: lettuce
}
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下查询的预期输出将是:
{
name: mr floof,
id: 12345,
lastMeal: abcdef
}
Run Code Online (Sandbox Code Playgroud)
由于 Floof 先生在 20171008 年(即 20171001 年之后)吃过最后一顿饭。
希望我说得足够清楚,但如果没有,请随时询问。
您可以尝试下面的聚合查询。
db.animals.aggregate([ [
{
"$lookup": {
"from": "meals",
"localField": "lastMeal",
"foreignField": "id",
"as": "last_meal"
}
},
{
"$unwind": "$last_meal"
},
{
"$match": {
"last_meal.created": {
"$gt": 20171001
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
更多信息请点击这里。
您可以在阶段$project后使用排除$match来格式化响应以排除连接的字段。就像是{ $project: {"last_meal":0} }
| 归档时间: |
|
| 查看次数: |
2756 次 |
| 最近记录: |