Mongoose - requête pour obtenir des données provenant de plusieurs collections
Je veux de requête get de la mangouste en nodejs application comme décrit ci-dessous mis out.
user.js, comment.js et post.js sont les fichiers de modèle que j'ai utilisé.
user.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var userSchema = new Schema({
nick_name:{type:String},
email: {
type: String,
trim: true,
required: '{PATH} is required!',
index: true,
},
},{ collection: 'user'});
var User = mongoose.model('User', userSchema);
module.exports = User;
comment.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var commentSchema = new Schema({
comment: type:String,
user_id:{
type:Schema.Types.ObjectId, ref:'User'
},
is_active :1
},{ collection: 'comment'});
post.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var postSchema = new Schema({
post: type:String,
user_id:{
type:Schema.Types.ObjectId, ref:'User'
},
is_active :1
},{ collection: 'post'});
veut sortir la mettre comme suit:
{
"nick_name":"prakash",
"email":"[email protected]",
"comments":[
{
"comment":"this is a comment text1",
"is_active":1,
},
{
"comment":"this is a comment text2",
"is_active":1,
}
],
"posts":[
{
"post":"this is a post text1",
"is_active":1,
},
{
"post":"this is a post text2",
"is_active":1,
},
{
"post":"this is a post text3",
"is_active":1,
},
]
}
dépendances
"express" => "version": "4.7.4",
"mongoose" => "version": "4.4.5",
"mongodb" => "version": "2.4.9",
"OS" => "ubuntu 14.04 lts 32bit",
si la requête n'est pas possible ,veuillez me suggère un bon mangouste plugn.
mais je ne veux pas à tout changement dans user.js fichier et son userSchema objet.
- haha Simplez...
- Je suis également struggeling maintenant, j'ai un commentaire de l'objet, Comme objet, et de l'autre objet. et je veux montrer Page profil de l'Utilisateur avec toutes les activités qu'il fait. mais le point est qu'ils sont différents de la collection. et Si je ne séparément, puis ils ne seront pas commandés par le temps
- Je vois que l'humour dans "requête de la mangouste", mais des accessoires de @laxman, je suis seulement à l'aise dans une langue. À cette phrase en anglais, vous pourriez dire, " je veux interroger la base de données Mongo à l'aide de la Mangouste dans une application nodejs...'.
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas 'rejoint' à Mongo. Mais ce que vous voulez faire est de changer votre Schéma Utilisateur de stocker de l'ObjectId de le Commenter et publier des documents dans un tableau de votre Utilisateur. Ensuite, utilisez-les remplir quand vous avez besoin de données avec l'utilisateur.
Votre requête devrait alors ressembler à ceci:
Mangouste remplir docs
C'est possible .vous devez utiliser agrégation.
il devrait fonctionner.
Lancer la variable
Bien sûr, il est possible, il suffit de remplir, permettez-moi de vous dire comment:
Importer vos schémas
Init tous les vars
Et maintenant, faire la requête
Cette façon, vous obtenez l'utilisateur à l'intérieur de votre commentaire et de votre post, pour obtenir le post et les commentaires à l'intérieur de votre utilisateur, vous devez faire 3 requêtes, l'une pour l'utilisateur, un pour les commentaires et l'autre pour le post, et mélanger le tout