小编Pet*_*son的帖子

MongoDB:查询具有两个相等字段的文档,$ match和$ eq

如果我想要document.a == document.b,那么返回集合中所有文档的最佳方法是什么?

我试过了

db.collection.aggregate([ { $match: { $eq: [ '$a', '$b' ] } }])
Run Code Online (Sandbox Code Playgroud)

但它返回没有错误或结果,因为我认为它字面上匹配字符串"$ a"和"$ b".是否有不同的方法来指定这些是字段?

db.collection.aggregate([    { $project: { 
    eq: { $cond: [ { $eq: [ '$a', '$b' ] }, 1, 0 ] } 
} },
{ $match: { eq: 1 } }])
Run Code Online (Sandbox Code Playgroud)

上述工作,但需要额外的步骤,使用它找到的任何文件或预测所有可能的字段再次查询.

有没有更好的方法来实现此查询?

database mongodb node.js npm aggregation-framework

14
推荐指数
2
解决办法
1万
查看次数

MongoDB - 投影一个并不总是存在的字段

有没有办法投影可能存在或不存在的字段?比如将它定义为null或undefined?

例如,我正在进行查询:

      $project: {
         date: 1,
         name: "$person.name",
         age: "$person.age"
      }              
Run Code Online (Sandbox Code Playgroud)

并非所有文件都保证有$ person.age,但不是没有年龄的人返回{date:Today,name:"Bill"},我想说{date:Today,name:"比尔",年龄:无效}.或类似的东西.

有没有比仅仅迭代数据更好的方法并创建字段(如果它们不存在)?

projection mongodb

7
推荐指数
1
解决办法
7209
查看次数