我有一个包含以下数据的文档集合
[{
_id:ObjectId(),
status:"created",
users:[{
email:"xyz@gmail.com",
role:"admin"
},
{
email:"abc@gmail.com",
role:"admin"
},
{
email:"abc@gmail.com",
role:"user"
}]
},
{
_id:ObjectId(),
status:"created",
users:[{
email:"pqr@gmail.com",
role:"admin"
},
{
email:"abc@gmail.com",
role:"admin"
},
{
email:"pqr@gmail.com",
role:"user"
}]
}]
我想获取具有“管理员”和“用户”角色且状态为“已创建”的用户的文档计数。现在,我正在尝试匹配电子邮件ID和角色。
db.documents.aggregate([
{"$match":{
"status":"created",
"$expr":{
"$eq":[
{"$size":{"$setIntersection":["$users.email_id","$users.email_id"]}},
0
]
}
}},
])
有什么方法可以比较来自同一对象的数组元素吗?
我想获取具有“管理员”和“用户”角色且状态为“已创建”的用户的文档计数。现在,我正在尝试匹配电子邮件ID和角色。
可以使用聚合或查找查询,如下所示:
var MATCH_EMAIL = "abc@gmail.com"
db.collection.aggregate( [
{
$match: {
$and: [ { status: "created" } , { "users": { $elemMatch: { role: "admin", email: MATCH_EMAIL } } } ],
"users": { $elemMatch: { role: "user", email: MATCH_EMAIL } }
}
},
{
$count: "Count"
}
] )
// -- or --
db.collection.find( {
$and: [ { status: "created" } , { "users": { $elemMatch: { role: "admin", email: MATCH_EMAIL } } } ],
"users": { $elemMatch: { role: "user", email: MATCH_EMAIL } }
} ).count()
请注意,两种情况下的查询过滤器是相同的。聚合返回类似< code>{ "Count" : 1 }的结果文档,但是查找查询只返回计数值,类似< code>1。< br >
[编辑添加]
更新了代码,使“用户”和“管理员”的电子邮件相同。
db.collection.aggregate( [
{
$match: {
$and: [ { status: "created" } , { "users.role": "admin" } ],
"users.role": "user"
}
},
{
$unwind: "$users"
},
{
$group: {
_id: { _id: "$_id", email: "$users.email" },
roles: { $push: "$users.role" }
}
},
{
$match: {
$expr: { $gt: [ { $size: "$roles" }, 1 ] }
}
},
{
$count: "Count with user+admin roles and same email"
}
] )
假设我有一个叫“序列”的类。这个类有一个实例变量。还有一些方法可以创建这个选项卡,比如: 现在,我想创建一个方法,它接受两个Sequence对象作为参数,并返回相同tab元素的数量。所以,我创建了这样的方法:
问题内容: 我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且每个数组的大小永远都不能超过8个,因此可能要使用遍历每个对象然后查看对象的值的蛮力方法。 8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗? 问题答案: 编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算
如果两个集合包含相同的对象,如何进行比较? 当然会打印错误。
问题内容: 我有两个像这样的对象数组: 我想知道数组是否相等。我定义的是相等的,因为array1中的每个值都与array2中该位置的值相同。因此,这两个数组将相等。 为什么最好找出这两个数组是否相等? 不是一个很深的等式,所以它是行不通的,我不知道是否遍历每个元素并进行比较是解决此问题的最佳,最有效的方法。有没有人有更好的建议? 编辑:我需要一个可以放入嵌套数组的等于。 问题答案: 使用。这项功能
我正在MongoDB中寻找合适的查询来比较关联数组中的两个值,我有这样的文档: 我需要比较 futurePrice 和 price 字段,以查找至少具有一种格式和 futurePrice 的文档 我尝试了这样的东西: 但是好像不行,有办法吗?