子文档中的猫鼬第一条记录
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) {...}
);
我想对子文档中的第一个匹配记录使用 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) {...}
);