Trouver la correspondance des éléments de tableau dans MongoDB document
Je développe une application web à l'aide de Codeigniter et MongoDB.
Dans la base de données, j'ai reçu un document qui ressemble à ceci:
{
"_id": {
"$id": "4f609932615a935c18r000000"
},
"basic": {
"name": "The project"
},
"members": [
{
"user_name": "john",
"role": "user",
"created_at": {
"sec": 1331730738,
"usec": 810000
}
},
{
"user_name": "markus",
"role": "user",
"created_at": {
"sec": 1331730738,
"usec": 810000
}
}
]
}
J'ai besoin de rechercher ce document à l'aide de deux user_name et de son rôle. Maintenant, quand je suis en utilisant le code ci-dessous je reçois à la fois. Je veux seulement obtenir des éléments de tableau correspondant à la fois à user_name et de son rôle.
$where = array (
'_id' => new MongoId ($account_id),
'members.user_id' => new MongoId ($user_id),
'members.role' => $role
);
$this -> cimongo -> where ($where) -> count_all_results ('accounts');
Vous devez vous connecter pour publier un commentaire.
C'est une vieille question, mais comme de MongoDB 2.2 ou alors, vous pouvez utiliser le
$
opérateur de position dans une projection de sorte que seul le contenu de l'élément de tableau est inclus dans le résultat.De sorte que vous pouvez faire quelque chose comme ceci:
C'est une répétition de cette question:
Obtenez de l'élément particulier de mongoDB tableau
Vous pouvez aussi utiliser $elemMatch
http://www.mongodb.org/display/DOCS/Advanced+Requêtes#AdvancedQueries-ValueinanArray
Ici, est le problème-vous n'allez pas être en mesure d'obtenir les éléments de tableau de ce match parce que mongo va retourner le document en entier si ces éléments correspondent. Vous devrez analyser le code côté client. Mongo n'ont pas les moyens de répondre, "uniquement la matrice qui correspond à."