MongoDB查询。匹配对象数组中的每个元素(广告条件)?

时间:2018-04-20 12:08:10

标签: javascript mongodb

我在db中有文章,我需要为每个日期获取slu。

"eventDate" : {
    "day" : "21",
    "month" : "04"
},
"slug": "some-slug"
...

作为和输入我有[{day: '01', month: '02'}, {day: '02', month: '02'}],我需要获得与此匹配的所有文章。 我做了这样的事情:

.find({'eventDate': { $in: myArrayOfObjects}}, {slug: 1})

如何正确使用?

1 个答案:

答案 0 :(得分:2)

请勿使用 $in 来搜索对象。在这种情况下,您应该使用 $or

db.collection.find({
  "$or": [
    {
      "eventDate.day": "01",
      "eventDate.month": "02"
    },
    {
      "eventDate.day": "02",
      "eventDate.month": "02"
    }
  ]
},
{
  "slug": 1
})

你可以在这里试试:mongoplayground.net/p/olTwcwGuuFi