假设mongodb文档(表)“用户”为
{
_id: 1,
name: { first: 'John', last: 'Backus' },
birth: new Date('Dec 03, 1924'),
death: new Date('Mar 17, 2007'),
contribs: [ 'Fortran', 'ALGOL', 'Backus-Naur Form', 'FP' ],
awards: [
{ award: 'National Medal',
year: 1975,
by: 'NSF' },
{ award: 'Turing Award',
year: 1977,
by: 'ACM' }
]
}
and other object(person)s
我想找到一位获得“国家奖”的人,并且必须在1975年获得该奖。可能会有其他人在不同的年份获得此奖。
如何使用奖励类型和年份查找此人。这样我就可以找到确切的人。
正确的方法是:
db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}})
$elemMatch
允许您在同一数组元素中匹配多个组件。
没有$elemMatch
mongo的用户将在1975年代和某些奖项中寻找获得National Medal的用户,而不是在1975s寻求拥有National Medal的用户。
有关更多信息,请参阅MongoDB $ elemMatch文档。有关有关使用数组查询文档的更多信息,请参见阅读操作文档。
使用$ elemMatch查找特定对象的数组
db.users.findOne({"_id": id},{awards: {$elemMatch: {award:'Turing Award', year:1977}}})
您可以通过两种方式执行此操作:
-
ElementMatch-
$elemMatch
(如以上答案中所述)db.users.find({ awards: { $elemMatch: {award:'Turing Award', year:1977} } })
-
使用
$and
与find
db.getCollection('users').find({"$and":[{"awards.award":"Turing Award"},{"awards.year":1977}]})
本文地址:http://javascript.askforanswer.com/ruhezaimongodbzhongsousuoduixiangshuzu.html
文章标签:arrays , express , javascript , mongodb , node.js
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:arrays , express , javascript , mongodb , node.js
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!