使用$ exists查询基于其子文档的mongo文档

时间:2014-12-23 11:06:23

标签: node.js mongodb mongoose

我正在尝试使用mongoose从mongo获取记录。 我有一个名为 projects 的文档,它有子文档 work 工作具有用户来自属性。我想获取具有特定用户的文档,并且没有设置的值。

到目前为止我试过了:

models.project.findOne {'work.user': user,'work.to':{$exists: false}},
  (err, data) -> # data is always null, no error.

似乎只要工作中的一个对象包含'to'属性,那么$ exists:等于true。有没有办法做到这一点?

如果您愿意,这里的JS代码也是相同的:

models.project.findOne({
  'work.user': user,
  'work.to': {
    $exists: false
  }
}, function(err, data) {});

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

在这种情况下,您可以使用$elemMatch,只有在特定user匹配并且在同一数组元素中没有to值设置时才会返回结果

models.project.users.findOne({
"work" : { $elemMatch: {"user":user, "to": {$exists: false}}}
}, function(err, data) {});

答案 1 :(得分:1)

你可以在这种情况下使用“null”而不是$ exists

models.project.findOne({
  'work.user': user,
  'work.to': null
}, function(err, data) {});