我需要知道如何在以下集合中执行查找操作。集合 1 的 id 用作集合 2 中的项目。我已经在下面提供了contoller.js
和模型文件,请告诉我必须在哪里进行查找才能从两个集合中获取记录
集合一:
/* 1 */
{
"_id" : ObjectId("58dcda850a13352724d4c716"),
"name" : "senthil",
"designation" : "CI",
"berief_text" : null,
"status" : 1,
"__v" : 0,
"type" : 1
}
/* 2 */
{
"_id" : ObjectId("58dcdade0a13352724d4c719"),
"name" : "ssss",
"designation" : "sssss",
"berief_text" : null,
"status" : 2,
"__v" : 0
}
集合二:
/* 1 */
{
"_id" : ObjectId("58dcda850a13352724d4c717"),
"imageLocation" : "uploads\project_images\14908688692032.png",
"projectId" : ObjectId("58dcda850a13352724d4c716"),
"__v" : 0
}
/* 2 */
{
"_id" : ObjectId("58dcda850a13352724d4c718"),
"imageLocation" : "uploads\project_images\1490868869210201876891658ad792131c9520170222051225.JPG",
"projectId" : ObjectId("58dcda850a13352724d4c716"),
"__v" : 0
}
/* 3 */
{
"_id" : ObjectId("58dcdade0a13352724d4c71a"),
"imageLocation" : "uploads\project_images\14908689587042.png",
"projectId" : ObjectId("58dcdade0a13352724d4c719"),
"__v" : 0
}
/* 4 */
{
"_id" : ObjectId("58dcdade0a13352724d4c71b"),
"imageLocation" : "uploads\project_images\14908689587321.png",
"projectId" : ObjectId("58dcdade0a13352724d4c719"),
"__v" : 0
}
控制器.js
var express = require("express"),
router = express.Router(),
project = require("../../models/project.js"),
projectimage = require("../../models/projectimages.js"),
router.get("/", function(req, res) {
project.find({}, function(err, data){
if(err){
res.send(err);
}
res.send(data);
});
projectimage.find({}, function(err, data){
if(err){
res.send(err);
}
res.send(data);
});
})
项目.js
var mongoose = require("mongoose"),
Schema = mongoose.Schema,
objectId = mongoose.Schema.ObjectId;
var projectSchema = new Schema({
name : {type: String, required : true},
designation : {type: String, required : true},
status : {type: Number, required : true},
type : {type: Number, required : true},
berief_text : {type: String, required : true},
});
var project = mongoose.model("project", projectSchema);
module.exports = project;
项目图像.js
var mongoose = require("mongoose"),
Schema = mongoose.Schema,
objectId = mongoose.Schema.ObjectId;
var ProjectimageSchema = new mongoose.Schema({
imageLocation: String,
projectId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'project'
},
});
var projectimage = mongoose.model("projectimage", ProjectimageSchema);
module.exports = projectimage;
获得的输出
服务器在 : http://localhost:3002 运行
[ { _id: 58dcda850a13352724d4c716,
name: 'senthil',
designation: 'CI',
berief_text: null,
status: 1,
__v: 0,
type: 1 },
{ _id: 58dcdade0a13352724d4c719,
name: 'ssss',
designation: 'sssss',
berief_text: null,
status: 2,
__v: 0 } ]
[ { _id: 58dcda850a13352724d4c717,
imageLocation: 'uploads\project_images\14908688692032.png',
projectId: 58dcda850a13352724d4c716,
__v: 0 },
{ _id: 58dcda850a13352724d4c718,
imageLocation: 'uploads\project_images\1490868869210201876891658ad792131c9520170222051225.JPG',
projectId: 58dcda850a13352724d4c716,
__v: 0 },
{ _id: 58dcdade0a13352724d4c71a,
imageLocation: 'uploads\project_images\14908689587042.png',
projectId: 58dcdade0a13352724d4c719,
__v: 0 },
{ _id: 58dcdade0a13352724d4c71b,
imageLocation: 'uploads\project_images\14908689587321.png',
projectId: 58dcdade0a13352724d4c719,
__v: 0 } ]
[ { _id: 58dcda850a13352724d4c716,
name: 'senthil',
designation: 'CI',
berief_text: null,
status: 1,
__v: 0,
type: 1 },
{ _id: 58dcdade0a13352724d4c719,
name: 'ssss',
designation: 'sssss',
berief_text: null,
status: 2,
__v: 0 } ]
[ { _id: 58dcda850a13352724d4c717,
imageLocation: 'uploads\project_images\14908688692032.png',
projectId: 58dcda850a13352724d4c716,
__v: 0 },
{ _id: 58dcda850a13352724d4c718,
imageLocation: 'uploads\project_images\1490868869210201876891658ad792131c9520170222051225.JPG',
projectId: 58dcda850a13352724d4c716,
__v: 0 },
{ _id: 58dcdade0a13352724d4c71a,
imageLocation: 'uploads\project_images\14908689587042.png',
projectId: 58dcdade0a13352724d4c719,
__v: 0 },
{ _id: 58dcdade0a13352724d4c71b,
imageLocation: 'uploads\project_images\14908689587321.png',
projectId: 58dcdade0a13352724d4c719,
__v: 0 } ]
预期产出
[ { _id: 58dcda850a13352724d4c716,
name: 'senthil',
designation: 'CI',
berief_text: null,
status: 1,
__v: 0,
type: 1.
images:[{ _id: 58dcda850a13352724d4c717,
imageLocation: 'uploads\project_images\14908688692032.png',
projectId: 58dcda850a13352724d4c716,
__v: 0 },
{ _id: 58dcda850a13352724d4c718,
imageLocation: 'uploads\project_images\1490868869210201876891658ad792131c9520170222051225.JPG',
projectId: 58dcda850a13352724d4c716,
__v: 0 }]
},
]
我的每个循环
project.find({}, function(err, data){
if(err){
res.send(err);
}
for each (var v in data) {
console.log(v);
}
});
使用人口来获取引用的数据。虽然您的引用当前已在ProjectimageSchema
中定义,但您还必须向projectsSchema
添加引用。您可以将ProjectimageSchema
中的 ref 属性projectId
重命名为project
以使其更清晰。
项目架构
var projectSchema = new Schema({
name: {type: String, required : true},
designation: {type: String, required : true},
status: {type: Number, required : true},
type: {type: Number, required : true},
berief_text: {type: String, required : true},
images: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Projectimage'
}
});
项目图像架构
var ProjectimageSchema = new mongoose.Schema({
imageLocation: String,
project: {
type: mongoose.Schema.Types.ObjectId,
ref: 'project'
}
});
完成此操作后,您可以使用填充获取相关数据 + 相关数据:
//get all project with relates images
project.find()
.populate('images')
.exec(function (err, post) {
if (err) return handleError(err);
});
//get all project images with relates projects
projectimage.find()
.populate('project')
.exec(function (err, post) {
if (err) return handleError(err);
});