![](/img/trans.png)
[英]How to find maximum value from array inside array of objects in mongodb
[英]Mongodb find a value inside the array
如果我有这个架构......
person = {
emails : Array
}
这些值存储在电子邮件数组中,如下所述:
emails : [{ a : "a@a.com" , b: "b@b.com" , c : "c@c.com" }]
现在我尝试了下面提到的查询,
Person.findOne({emails : "a@a.com"}).exec(function(err,person){
});
Person.native(function(err,collection){
collection.find( emails : { "$in" : "a@a.com"} , function(err , result){
//code
});
现在我尝试使用OR如下。
Person.findOne({
"or": [
{"emails.a": "a@a.com" },
{"emails.b": "a@a.com" },
{"emails.c": "a@a.com" }
]
}, function(err,doc) { });
实际上,我必须检查“emails.a”有“a@a.com”,如果不是,我必须找到“emails.b”或“emails.c”是否有“a@a.com”。
如果“emails.a”有“a@a.com”,那么doc应返回输出。 否则在“emails.b”或“emails.c”中继续搜索“a@a.com”。
我怎样才能做到这一点?
但是我没有使用上面的查询获得所需的输出。 请帮忙。 非常感谢。
您的数组包含一个带有键a
, b
和c
的子文档。 为了匹配您想要的值,您需要指定此元素。
Person.findOne({ "emails.a": "a@a.com" }, function(err,doc) {
如果您希望在不同的字段中执行此操作,请将其与$or
:
Person.findOne({
"$or": [
{"emails.a": "a@a.com" },
{"emails.b": "a@a.com" },
{"emails.c": "a@a.com" }
]
}, function(err,doc) {
请注意,这与“文档”匹配,而不仅仅是数组的成员。
另请参阅$elemMatch
运算符以了解它的用途。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.