如何使用$groupby并转换不同的值mongodb
如何使用如何使用$groupby并转换不同的值mongodb,mongodb,aggregation-framework,conditional-statements,Mongodb,Aggregation Framework,Conditional Statements,如何使用$if$elsegroupby条件MongoDB转换数据 这个操场应该返回两个属于文本的对象,分别是“tester 2”和“tester 3”。如果我在历史记录集合中有多个对象,它还应该检查最后一个对象,而不是所有对象,这是怎么可能的 所以条件应该说,如果历史记录的日期是$gt,那么主集合应该不返回任何内容,而是返回匹配的条件数据 db.main.aggregate([ { $lookup: { from: "history", localField:
$if$else
groupby条件MongoDB转换数据
这个操场应该返回两个属于文本的对象,分别是“tester 2”和“tester 3”。如果我在历史记录集合中有多个对象,它还应该检查最后一个对象,而不是所有对象,这是怎么可能的
所以条件应该说,如果历史记录的日期是$gt
,那么主集合应该不返回任何内容,而是返回匹配的条件数据
db.main.aggregate([
{
$lookup: {
from: "history",
localField: "history_id",
foreignField: "history_id",
as: "History"
}
},
{
$unwind: "$History"
},
{
"$match": {
$expr: {
$cond: {
if: {
$eq: [
"5e4e74eb380054797d9db623",
"$History.user_id"
]
},
then: {
$and: [
{
$gt: [
"$date",
"$History.date"
]
},
{
$eq: [
"5e4e74eb380054797d9db623",
"$History.user_id"
]
}
]
},
else: {}
}
}
}
}
])
如果我理解正确,这就是你想要做的:
db.main.aggregate([
{
$lookup: {
from: "history",
let: {
main_history_id: "$history_id",
main_user_id: { $toString: "$sender_id" }
},
pipeline: [
{
$match: {
$expr: {
$and: [
{
$eq: [
"$history_id",
"$$main_history_id"
]
},
{
$eq: [
"$user_id",
"$$main_user_id"
]
}
]
}
}
}
],
as: "History"
}
},
{
$unwind: {
path: "$History",
preserveNullAndEmptyArrays: true
}
},
{
$sort: {
_id: 1,
"History.history_id": 1,
"History.date": 1
}
},
{
$group: {
_id: "$_id",
data: { $last: "$$ROOT" },
History: { $last: "$History" }
}
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: [
"$data",
{ History: "$History" }
]
}
}
},
{
"$match": {
$expr: {
$or: [
{
$eq: [
{ $type: "$History.date" },
"missing"
]
},
{
$ne: [
"5e4e74eb380054797d9db623",
"$History.user_id"
]
},
{
$and: [
{
$eq: [
"5e4e74eb380054797d9db623",
"$History.user_id"
]
},
{
$gte: [
"$date",
"$History.date"
]
}
]
}
]
}
}
}
])
Hi@Valijon如果历史记录集合为空,则应返回所有主要集合详细信息,并仅返回_id,主集合中的日期和文本,但它应该返回所有数据谢谢您还需要一个帮助,如果用户id不匹配,请查看此信息也返回everything@SunilDubey检查这个@Vilijon你能帮我一个忙吗?我们不能根据主收藏的历史记录id和发件人id以及历史记录收藏的用户id和历史记录id设置查找,然后检查吗和日期相比?如果可能的话,请引导他们help@SunilDubey看一看