ユーザーのフレンド コレクションに属する特定の配列アイテムをクエリするにはどうすればよいでしょうか。
クエリは次のとおりです。
Friend.find({userId: req.signedCookies.userid, 'friendStatus.labels': req.body.searchLabels
}, function(err, users) {
この内訳は、userId がサインインしているユーザーのドキュメントを見つける方法であり、friendStatus 配列内にあるオブジェクトにネストされている labels 配列内のラベルにアクセスしたいだけです...
ドキュメントの例を次に示します。
> db.friends.find({'firstName': "test3"}).pretty()
{
"__v" : 0,
"_id" : ObjectId("520a4944c24d995410000008"),
"accepted_notifications" : true,
"added_notifications" : true,
"firstName" : "test3",
"firstNameTrue" : "test3",
"friendStatus" : [
{
"favorites" : 1,
"fuId" : ObjectId("520a4905c24d995410000001"),
"labels" : [
"new",
"old"
],
"notes" : "He likes me",
"status" : 3
},
{
"fuId" : ObjectId("520a4925c24d995410000004"),
"labels" : [ ],
"notes" : "sadwa",
"status" : 3
}
],
"lastName" : "test3s",
"lastNameTrue" : "TEST3s",
"notifications" : 0,
"userId" : ObjectId("520a4944c24d995410000007")
}
コールバックユーザーを使用すると、現在のクエリはドキュメント全体を返しますが、一致するラベルのためにこれを引き出したいだけです:
{
"favorites" : 1,
"fuId" : ObjectId("520a4905c24d995410000001"),
"labels" : [
"new",
"old"
],
"notes" : "He likes me",
"status" : 3
},