我正在尝试使用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) {});
感谢您的时间。
答案 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) {});