gpt4 book ai didi

javascript - mongodb中如何加入集合

转载 作者:行者123 更新时间:2023-11-28 18:18:06 30 4
gpt4 key购买 nike

我有一个集合,其中数据由所有者存储,所有者 ID 也与数据一起存储。另一方面,还有另一个集合,其中存储了所有者详细信息。

{
"_id" : ObjectId("58103aac9899ff238cbae413"),
"id" : 10585131,
"title" : "Edfwef EdfwefE dfwefE dfwefEd fwef",
"category" : "Furniture",
"condition" : "Brand New",
"brand" : "Samsung",
"price" : "3434",
"description" : "sdvsdfv",
"date" : ISODate("2016-10-26T05:10:04.240Z"),
"ownerId" : "40903aac9899er238cbae598",
"__v" : 0
}

现在我正在获取以上数据并显示在 HTML 文件上。在获取数据的同一个 html 文件上,我想根据ownerId 显示所有者详细信息。我的意思是如何加入 mongodb 中的两个集合?请帮忙。

谢谢。

更新:

广告模型

`var adSchema=new Schema({ id:{type:Number}, title:{type:String, required:true}, category:{type:String}, condition:{type:String}, brand:{type:String}, price:{type:String}, city:{type:String}, town:{type:String}, description:{type:String}, image:{type:String}, date:{type:Date}, ownerId:{type:Schema.Types.ObjectId, ref: 'user'} }); module.exports=mongoose.model('ads', adSchema);`

用户

`var UserSchema=new Schema({ name:{type:String, require:true}, password:{type:String, require:true, unique:true,}, email:{type:String, require:true, unique:true,}, mobile:{type:String} }); module.exports = mongoose.model('User', UserSchema);`

插入数据

`apiRoutes.post('/adcreate',upload ,function(req, res, next){
var token=req.headers.authorization;
var owner=jwt.decode(token, config.secret);
var currentDate=Date.now();
var adId=Math.floor(Math.random()*13030978)+1;
var ad=new admodel({
id:adId,
title: req.body.title,
category:req.body.category,
condition:req.body.condition,
brand:req.body.brand,
price:req.body.price,
city:req.body.city,
town:req.body.town,
description:req.body.description,
date:currentDate,
ownerId:owner.id
}) ;
ad.save(function(err, data){
if(err){
return res.json({success:false, msg:'Ad not Posted'});
}else{
res.json({succes:true, msg:'Successfully ad Posted'});
}
});
});`

获取数据

`apiRoutes.get('/individualads/:id', function(req, res,next){ admodel.findOne({_id:req.params.id}).populate('ownerId').exe‌​c(function(err, data){ if(err){ res.json(err); } else{ console.log(data); res.json(data); } }); });`

最佳答案

您可以尝试如下操作并根据您的数据库集合替换属性

引用链接:https://docs.mongodb.com/v3.2/reference/operator/aggregation/lookup/

// I assume 'orders' is your first collection name
db.orders.aggregate([
{
$lookup:
{
from: "owners", // your second collection name
localField: "ownerId", // matched property in first collection
foreignField: "_id", // matched property to join to the second collection
as: "owner" // owner details output property
}
}
])

按照您的要求使用 mongoose

在您的 admodel 上,添加 ref 以及目标(第二个)模型名称,如下所示

ownerId: {
type: Schema.Types.ObjectId,
ref: 'owner' // This should be a name of the second model name in which you want to join and fetch data
}

然后更改路线如下,

apiRoutes.get('/individualads/:id', function(req, res,next){
admodel.findOne({_id:req.params.id}).populate('ownerId').exec(function(err, data){
if(err){
res.json(err);
} else{
console.log(data);
res.json(data);
}
});
});

关于javascript - mongodb中如何加入集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40462072/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com