我正在使用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
使它正常工作?