子文档中的猫鼬第一条记录

moogoose first record from sub-document

我想对子文档中的第一个匹配记录使用 and 条件 select。

MongoDB:

db.users.findOne({'$and': [{username:'kevfixx'}, {'check.month':'Jan'}, {check.year': 2015}]}, {check.$': 1})

Mongoosejs 中,我该如何输入 {check.$': 1}:

User.findOne({'$and': [{username:'kevfixx'}, {'check.month': 'Jan'}, {'check.year': 2015}]}, function(err, user){ ... }

使用字符串 'check.$' 将字段选择作为第二个参数传递给 findOne,但您还应该修复查询。

就像现在一样,这可以将 month 与一个元素匹配,并将 year 与另一个元素匹配。使用 $elemMatch 要求两个字段匹配 相同的 元素。

而且您不需要在此处使用 $and,因为所有查询字词都隐含地与在一起。

综合起来,您的 Mongoose 查询应该如下所示:

User.findOne(
    {username: 'kevfixx', check: {$elemMatch: {month: 'Jan', year: 2015}}},
    'check.$',
    function (err, user) {...}
);