我有两个表,我想提取至少有一个共享对象的所有标记。我也需要在过去7天内创建它。
我不擅长集训。有人能帮忙吗?
当在最后7天内至少有一个共享(表2) createdAt时,检索标记(表1)
在下面的示例中,只应该检索tagId 3和4。Am使用nodejs
股份:
标签:
发布于 2021-07-21 14:47:01
您可以使用聚合$lookup运算符,然后使用$match过滤掉在过去7天内没有创建的
db.tags.aggregate([
{ $lookup:
{
from: "shares",
localField: "_id",
foreignField: "tagId",
as: "shares"
}
},
{ $project:
{
name:1,
createdAt:"$shares.createdAt"
}
},
{$unwind:"$createdAt"},
{ $match:
{ $expr:
{ $gte: [
{"$dateFromString": {"dateString": "$createdAt"}},
{ $subtract:["$$NOW", 7*24*60*60*1000]}
]
}
}
}
])发布于 2021-07-26 07:25:28
这个聚合查询$lookup操作符,然后在$lookup中过滤掉在过去7天中创建的记录。
db.tags.aggregate([
{
'$lookup': {
'from': 'share',
'let': {
'tag_id': '$_id'
},
'pipeline': [
{
'$match': {
'$expr': {
'$and': [
{
'$eq': [
'$tagId', '$$tag_id'
]
}, {
'$gte': [
{
'$dateFromString': {
'dateString': '$createdAt'
}
}, {
'$subtract': [
'$$NOW', 7 * 24 * 60 * 60 * 1000
]
}
]
}
]
}
}
}
],
'as': 'shares'
}
}, {
'$match': {
'shares.0': {
'$exists': true
}
}
}
])https://stackoverflow.com/questions/68470986
复制相似问题