我对mongodb中的聚合概念相对陌生。在我的文档中,有一个数组。我尝试用$match,$unwind,$group来提取数组中有两个给定值的文档。我猜写上去没什么帮助..这是样品
文件:
{Name:"Kal", Class: "2", Subject: ["Physics", "English", "Maths"]},
{Name:"Matt", Class: "1", Subject: ["Physics", "English"]},
{Name:"Kim", Class: "1", Subject: ["Physics", "Spanish"]},
{Name:"Bud", Class: "2", Subject: ["Physics", "German"]},
{Name:"Roger", Class: "2", Subject: ["Physics", "French"]},
{Name:"Kate", Class: "1", Subject: ["English"]}
从这些文档中,我需要提取一个具有“类:1”和“主题[”物理“,”英语“]的文档
所以,如果我正确地编写了查询(或聚合),我应该从上面提取第二个文档。
这是我所拥有的
db.Student.aggregate([{"$match": {"Class": "1",}},{"$unwind": "$Subject"},{"$match": {"Subject": "Physics"}},{"$match": {"Subject": "English"}} ]).pretty()
好吧,上面的聚合没有给我任何反馈,所以我尝试使用$并将'物理'和'英语'结合起来,但是我得到了'$并且不是阶段运算符'错误。
我也尝试了下面的聚合,但我什么也没得到。
db.Student.aggregate([{"$match": {"Class": "1",}},{"$match": {"Subject": ["Physics", "English"]}} ]).pretty()
我该怎么做?
不需要聚合框架即可执行此操作。只需使用 .find()
方法:
如果您想要那些“物理”和“英语”位于“主题”数组中的文档,则需要使用$all
运算符。
db.Students.find( { "Subject": { "$all": [ "Physics", "English" ] } } )
要返回仅存在这些主题的文档,您需要使用$size
运算符。
db.Students.find( { "Subject": { "$all": [ "Physics", "English" ] }, "Subject": { "$size": 2 } } )
我得到了一个
主要集合是零售商,其中包含用于商店的数组。每个商店都包含一系列优惠(您可以在此商店购买)。这提供了具有数组大小的数组。(见下面的例子) 现在我试图找到所有的优惠,这是在大小。 我尝试了这个查询: 我期待这样的输出: 但是,我的查询的输出还包含与XS、X和M不匹配的offer。 如何强制MongoDB只返回符合我查询的报价? 问候和感谢。
使用mongoose,我希望搜索具有特定属性的子文档并返回最近的一个。 给定一个特定的用户,我想搜索他们的s,查找他们的
问题内容: 嗨,我的收藏集是这样的,我试图按日期的排序顺序获取特定blog_id的所有评论列表。 我想按日期的降序列出特定blog_id的所有评论,如下所示 我如何在mongooes或mongodb中做到这一点 我试过了 该查询提供了注释以及来自多个文档的所有相关注释,但是注释是随机的。$ sort不适用于我 先感谢您。 问题答案: 乔琳 试试这个: 根据您的样本数据,输出将是:
给定对象数组: 如何构造查询,以便在DB中更新每个文档的名称字段,其中文档的id等于数组对象中的\u id? 这必须在单个查询中完成。查询必须使用mongoDB节点驱动程序语法。 例如:
问题内容: 我想返回数组的奇数,但是Eclipse似乎不接受我的返回码。我认为这需要返回整个数组,因为我将数组设置为方法的参数。如前所述,我需要传递一个数组并获取该数组的特定元素作为回报。即使我将该数组设为静态,如何返回单个元素? 编辑:好吧,这里是: 我知道这里可能存在多个错误,但我正在努力,不仅要返回奇数,还要将它们加在一起。 问题答案: 您的代码应如下所示: 这里的要点是方法返回类型,它应该