MongoDB表达式查询子文档数组

时间:2019-07-29 17:31:19

标签: mongodb nosql expression

我正在使用MongoDB 4 / Mongoose 5构建应用程序。

我有一个带有一系列子文档“项目”的“记录”集合。

{
  RecordID: 1,
  Items: [
    { 
      Title: 'Example Title 1',
      Description: 'Example Description 1',
    },
    { 
      Title: 'Example Title 2',
      Description: 'Example Description 2',
    }
  ]
}

我正在构建一个动态查询生成器,该生成器将基于UI查询生成器创建MongoDB表达式运算符。动态查询构建器正在正确构建MongoDB表达式。但是,查询子文档数组时,这些表达式无法正常工作。

问题:为什么此表达式不适用于子文档“项”的嵌套数组?

此查询正常工作。

db.records.find({ 'Items.Title': { $eq: 'Example title 1'} })

与表达式相同的查询未返回任何结果。

db.records.find({ '$expr': { '$and': [ { '$eq': [ 'Items.Title', 'Example title 1' ] } ] }})

也尝试过:

db.records.find({ '$expr': { '$and': [ { '$eq': [ '$Items.Title', 'Example title 1' ] } ] }})

更新:如果将查询更新为使用$elemMatch,则查询将起作用。但是,我需要使用$expr,因为我正在使用多个和/或使用$expr运算符构造的条件来构建嵌套查询。有什么办法可以使用$expr使它正常工作?

1 个答案:

答案 0 :(得分:2)

改为使用$elemMatch

{{1}}

希望这会有所帮助。