带有联合数据点的Mongodb查询

时间:2018-04-11 01:01:33

标签: mongodb nosql mongodb-query

我正在尝试创建一个查询,当它小于70且类型为考试时,只使用类型分数从我的数据库中提取此信息:

  {"_id":0,"name":"aimee Zank",
 "scores":[{"score":1.463179736705023,"type":"exam"},      
{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}

我没有收到任何错误,而且它变得空白。这是我正在尝试使用的查询:

db.students.find({"scores":[{"score":{$lt:70},"type":"exam"}]}).pretty

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

这不是你如何匹配数组中的元素。使用$elemMatch

db.students.find({"scores":{$elemMatch:{score:{$lt:70},type:"exam"}}})

<强>更新: OP将帖子标记为&#34;未回答&#34;然后带来扭曲的要求。展望未来,请确保针对您的全新要求发布单独的问题,或者正确陈述您的问题,不要随着时间的推移而延长。但是,这里是使用聚合框架的过滤查询:

db.collection.aggregate([
  {$addFields:{scores:{$filter:{
     input:"$scores",
     as:"score",
     cond:{$and:[{$eq:["$$score.type","exam"]},{$lt:["$$score.score",70]}]} 
   }}}}
])

这会过滤score小于70的所有考试。