我是MongoDB的新手,我正在尝试进行平等匹配,但一直未能做到这一点。我有一个“用户”集合,其中包含以下数据:
{
uid:"1230"
age:20
Name:"Alex"
gender:"male"
interestedIn:"female"
}
{
uid:"1231"
age:23
Name:"Neil"
gender:"male"
interestedIn:"male"
}
{
uid:"1232"
age:20
Name:"Amy"
gender:"female"
interestedIn:"male"
}
我想要的是找到“性别”等于当前用户“感兴趣”的记录,反之亦然。i、 e.当我作为用户“Alex”访问时,查询应该只提供“Amy”的记录(因为Amy的性别值等于Alex的“interestedIn”值),而不是Neil的记录。和
当我作为用户“Neil”访问时,不应返回任何数据,因为没有任何男性用户以及对男性感兴趣的用户!
我尝试使用$查找,但它根本不起作用。我很难使用$cond操作符来处理这个案件。这是我的代码:
//我也在使用地理空间函数(通过对坐标进行硬编码),但这不是问题所在,没有返回任何内容。
db.users.aggregate([{
"$geoNear": {
"near": {
type: "Point",
coordinates: [31.9686, 99.90]
},
"spherical": true,
"distanceField": "distance",
"maxDistance": 500,
"query": {
uid: {
$ne: "1230"
},
age: {
$gt: 18,
$lt: 25
},
{
$lookup:
{
from: "users",
localField: "gender",
foreignField: "interestedIn",
as: "gender_docs"
}
},
limit: 5
}
},
{
"$project": {
location: 0
}
}
]).pretty()
有人能告诉我该怎么做吗?
//当前用户为Alex时的预期输出
{
uid:"1232"
age:20
Name:"Amy"
gender:"female"
interestedIn:"male"
}
当当前用户为Neil时,我的预期输出应该为空,因为没有任何其他性别为男性且感兴趣的记录为男性!