假设mongodb文档(表)“users”为
{
_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年必须获得“国家奖章”的人,可能还有其他人在不同的年份获得该奖项。
我怎样才能找到这个人使用奖励类型和年份。所以我可以得到确切的人。
正如上面的答案所解释的那样,要从整个数组中只返回一个字段,您可以使用投影
到find中。并使用$
db.getCollection("sizer").find(
{ awards: { $elemMatch: { award: "National Medal", year: 1975 } } },
{ "awards.$": 1, name: 1 }
);
将返回
{
_id: 1,
name: {
first: 'John',
last: 'Backus'
},
awards: [
{
award: 'National Medal',
year: 1975,
by: 'NSF'
}
]
}
使用$elemMatch查找特定对象的数组
db.users.findOne({"_id": id},{awards: {$elemMatch: {award:'Turing Award', year:1977}}})
正确的方法是:
db.users.find({awards: {$elemMatch: {award:'National Medal', year:1975}}})
使用“$elemMatch”可以匹配同一阵列元素中的多个组件。
如果没有$elemMatch
mongo将在某一年寻找拥有国家奖章的用户,并在1975年寻找一些奖项,但不会寻找拥有1975年国家奖章的用户。
有关更多信息,请参阅MongoDB$elemMatch文档。有关使用数组查询文档的更多信息,请参阅阅读操作文档。
问题内容: 假设mongodb文档(表)“用户”为 我想找到获得“国家奖章”的人,必须在1975年获得该奖。可能会有其他人在不同的年份获得此奖。 如何使用奖励类型和年份查找此人。这样我就可以找到确切的人。 问题答案: 正确的方法是: 允许您在同一数组元素中匹配多个组件。 没有mongo的用户会在1975年代和某些奖项中寻找获得National Medal的用户,但不会寻找1975年获得Nation
我有两个java对象:MyObject和MyObjectDetails 搜索空值或空字符串的最佳且简单的方法是什么? 实际上,我正在为这个类使用一个特定的验证器,逐字段检查空值和空字符串。 例如,要检查空值,我使用: 但我也很喜欢将来可以用来制作其他物体的东西。
在springboot中,您可以拥有一个
我读了这篇文章,看到了如何在MongoDB中搜索记录的名字: http://docs.mongodb.org/manual/reference/sql-comparise/ 但是,如果我的字符串有两个单词(即firstname和lastname),我如何搜索firstname和lastname。 在MySQL中,我正在使用: 其中数据包含“Mike Thompson”。
本文向大家介绍在C#中搜索SortedList对象,包括了在C#中搜索SortedList对象的使用技巧和注意事项,需要的朋友参考一下 要在SortedList对象中进行搜索,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-
问题内容: 我有一个对象列表,列表很大。对象是 现在,我必须在列表中搜索对象的特定值。假设 我必须返回那些对象(我的搜索并不总是基于value3) 清单是 有效的方法是什么? 谢谢。 问题答案: 您可以尝试使用Apache Commons Collections。 有一个CollectionUtils类,允许您通过自定义谓词选择或过滤项目。 您的代码将如下所示: 更新: 在 java8中 ,使用