我正在执行mongodb查询,或者正在对SQL数据库使用LEFT JOIN。
以下是配置文件的文档:
{
"_id" : ObjectId("5bd22f28f77cfb1f6ce503ca"),
"search" : "flarize",
"name" : "flarize",
"email" : "flarize.ba73@gmail.com",
"password" : "$2a$10$eYeOtEkEUyD7TFkjKvhZOuSSpvBolkL17TrPHuoHhOT8JrsQR0UKW",
"color" : 0,
"profil" : "",
"banner" : "",
"desc" : "",
"date" : 1540501286109,
"friend" : [
{
"id" : ObjectId("5bd19a92da24674fdabd26b6")
}
],
"groupes" : [ ]
}
我当前正在使用此请求:
db.users.find({search: /f/}).limit(20);
此查询只是根据正则表达式给出了配置文件。
我想要更多,如果在朋友部分中存在调用此查询的人的ID,则我们添加:
is_friend: true
其他添加:
is_friend: false
编辑:
对于此查询,我们有:
调用请求者的ID,并尝试知道该ID是否存在于好友字段中。
编辑
我尝试了一下但不起作用,返回false。
herdb.users.aggregate([{$match:{"search":"flarize"}},
{$project:
{search: 1, name: 1, color: 1, profil: 1, banner: 1, desc: 1, date: 1, friend:10, groupes:10,
is_friend:
{$cond:[
{$eq:["$friend.id", ObjectId("5bd19a92da24674fdabd26b6")]},
true,
false]
}
}
}
]).pretty();
谢谢您的帮助。
答案 0 :(得分:0)
将$unwind
用作朋友,然后再匹配id
$eq
不适用于数组。
db.getCollection('tests').aggregate([
{ $match: {"search":"flarize"} },
{ $unwind: "$friend"},
{ $project:{
search: 1, name: 1, color: 1, profil: 1, banner: 1, desc: 1, date: 1, friend:10, groupes:10,
is_friend: { $cond: [
{ $eq :["$friend.id", ObjectId("5bd19a92da24674fdabd26b6")]}, true, false ]}
}
}
]);
输出:
/* 1 */
{
"_id" : ObjectId("5bd22f28f77cfb1f6ce503ca"),
"search" : "flarize",
"name" : "flarize",
"color" : 0,
"profil" : "",
"banner" : "",
"desc" : "",
"date" : NumberLong(1540501286109),
"friend" : {
"id" : ObjectId("5bd19a92da24674fdabd26b6"),
"id" : ObjectId("5bd19a92da24674fdabd26b4"),
"id" : ObjectId("5bd19a92da24674fdabd26b2"),
"id" : ObjectId("5bd19a92da24674fdabd26b1")
},
"groupes" : [],
"is_friend" : true
}
如果要friend
将其返回到数组列表:
db.getCollection('tests').aggregate([
{ $match: {"search":"flarize"} },
{ $unwind: "$friend"},
{ $project:
{
search: 1, name: 1, color: 1, profil: 1, banner: 1, desc: 1, date: 1, friend:10, groupes:10,
is_friend: { $cond: [
{ $eq :["$friend.id", ObjectId("5bd19a92da24674fdabd26b6")]}, true, false ]}
}
},
{$group : {
_id: "$_id",
search : {$first: "$search"},
name : {$first: "$name"},
color : {$first: "$color"},
profil : {$first: "$profil"},
banner : {$first: "$banner"},
desc : {$first: "$desc"},
date : {$first: "$date"},
groupes : {$first: "$groupes"},
friend : {$push: "$friend"},
is_friend: {$first: "$is_friend"}
}}
])