如何在$match$expr中使用$and,以满足mongodb/mongoose中的所有表达式

如何在$match$expr中使用$and,以满足mongodb/mongoose中的所有表达式,mongodb,Mongodb,嗨,我从最近两天开始一直在努力寻找所有符合当前日期所有标准的帖子,但仍然没有找到正确的方法 const today = await Posts.aggregate([ { $match: { $expr: { $and: [ { chk_featured: true }, { feature

嗨,我从最近两天开始一直在努力寻找所有符合当前日期所有标准的帖子,但仍然没有找到正确的方法

const today = await Posts.aggregate([
        {
            $match: {
                $expr: {
                    $and: [
                        { chk_featured: true },
                        { featured_type: 't' },
                        { $eq: [{ $dayOfMonth: '$publish_date' }, { $dayOfMonth: new Date() }] },

                    ],
                },
            }
        }
    ]);

    if (!today) return res.status(404).json({ msg: "no records found" });
    return res.status(200).json({ today: today });
{ “_id”:“5f8047b5f5af011b642b6bb1”, “选择利益集团”:[“名称2,名称1”], “状态”:“a”

},, { “_id”:“5f8047b5f5af011b642b6bb1”

},, { “_id”:“5f8047b5f5af011b642b6bb1”

},, { “_id”:“5f8047b5f5af011b642b6bb1”

}

由于我是Mongodb的第一次用户,所以无法找出这其中的错误


非常感谢您的帮助。

如果我是对的,请参阅文档中的这一行

{$and:[,…]}

表示内部不能有普通对象,如下所示:

 { chk_featured: true }
但只有表情

因此,我对其进行了如下调整:

db.test.aggregate([{
$match: { $expr: {$and: [     
{ $eq:["$chk_featured", true] },
{ $eq:["$featured_type", 't'] },     
{ $eq: [{ $dayOfMonth: '$publish_date' }, { $dayOfMonth: new Date() }] }      
  ]}}
}]);

编辑

另一个表达可能更容易理解。(没有测试)


如果我是对的,这一行来自文档

{$and:[,…]}

表示内部不能有普通对象,如下所示:

 { chk_featured: true }
但只有表情

因此,我对其进行了如下调整:

db.test.aggregate([{
$match: { $expr: {$and: [     
{ $eq:["$chk_featured", true] },
{ $eq:["$featured_type", 't'] },     
{ $eq: [{ $dayOfMonth: '$publish_date' }, { $dayOfMonth: new Date() }] }      
  ]}}
}]);

编辑

另一个表达可能更容易理解。(没有测试)


@santimirandarp,没有特别的原因-只是想让它工作-find没有工作,它给出了“未知的顶级操作符:$eq”这里发布日期匹配,但其他两个条件不匹配我相信如果你对帖子稍加改进,它会更容易。包括一个示例数据,以便我可以在本地测试代码。一个或两个文档就足够了。日期功能是匹配的-但也有类似的要求来匹配每月和每周的帖子-所有的比较都是有效的,但我需要匹配日期的帖子以及特色的“t”和“chk”特色的:true-因此所有文档都是在其特色为true/false和true的地方获取的特色_类型有任何价值感谢这项工作@santimirandarp,没有特别的原因-只是想让它工作-find没有工作,它给出了“未知的顶级操作符:$eq”这里发布日期匹配,但其他两个条件不匹配我相信如果你对帖子稍加改进,它会更容易。包括一个示例数据,以便我可以在本地测试代码。一个或两个文档就足够了。日期功能是匹配的-但也有类似的要求来匹配每月和每周的帖子-所有的比较都是有效的,但我需要匹配日期的帖子以及特色的“t”和“chk”特色的:true-因此所有文档都是在其特色为true/false和true的地方获取的特色_类型有任何价值感谢这项工作!
 { chk_featured: true }
db.test.aggregate([{
$match: { $expr: {$and: [     
{ $eq:["$chk_featured", true] },
{ $eq:["$featured_type", 't'] },     
{ $eq: [{ $dayOfMonth: '$publish_date' }, { $dayOfMonth: new Date() }] }      
  ]}}
}]);
db.test.find({ 
 "chk_featured":true, 
 "featured_type":"t", 
 {"$expr": { $eq: [
  { $dayOfMonth: '$publish_date' }, 
  { $dayOfMonth: new Date() }
] } }
})