我想检查多个文档中是否存在特定数据。
例如,我想检查用户集合中是否存在电子邮件,如果要收集数据,则是否要收集客户。
我在下面的查询中尝试过,但是由于只检查一个集合而失败。
db.t_usermasters.aggregate([
{
$match: {
"email" : "test@test.com"
}
},{
$lookup: {
from: "t_customermasters",
localField: "email",
foreignField: "email",
as: "UserDetails"
}
}
]).pretty();
答案 0 :(得分:0)
尝试以下代码:
db.t_usermasters.aggregate([
{
$match: {
"email" : "test@test.com"
}
},{
$lookup: {
from: "t_customermasters",
localField: "email",
foreignField: "email",
as: "UserDetails"
}
}, {
$match: {
UserDetails: { $exists: true, $not: {$size: 0} }
}
}
]).pretty();
答案 1 :(得分:0)
您实际上需要在t_customermasters
中查找,并通过使用空数组进行条件化来向下投射
db.t_usermasters.aggregate([
{
$match: {
"email" : "test@test.com"
}
},
{
$lookup: {
from: "t_customermasters",
localField:"email",
foreignField:"email",
as: "UserDetails"
}
},
{
$project:{
_id:true,
email:true,
emailExistInBoth:{
$cond:{
if:{
$eq:[{$size:"$UserDetails"},0]
},
then:false,
else:true
}
}
}
},
{
$match:{
"emailExistInBoth":true
}
}
]).pretty();
答案 2 :(得分:0)
if(db.t_usermasters.count({email:'test@test.com'})&& db.t_customermasters.count({email:'test@test.com'})){ //在这里获取您的数据 //您可以使用usermasters集合中的customerId字段来关联这两个集合,然后在从usermasters集合中获取数据时填充它('customerId') }