gpt4 book ai didi

Node.js - Angular - MongoDB - 对于 `userid` ,获取 `username`

转载 作者:太空宇宙 更新时间:2023-11-04 00:11:06 24 4
gpt4 key购买 nike

我有这样的 Mongoose 。架构:

User.js:

const mongoose = require('mongoose');
const bcrypt = require('bcrypt-nodejs');
const Schema = mongoose.Schema;

const UserSchema = new Schema({

username: String,
password: String,
email: String,
});

module.exports = mongoose.model('users', UserSchema, 'users');

product.js:

const mongoose = require('mongoose');
var mongoosePaginate = require('mongoose-paginate');
const Schema = mongoose.Schema;

const ProductSchema = new Schema({

userid: {type:String, required: true},
product_name: {type:String, required: true}
});

ProductSchema.plugin(mongoosePaginate);
module.exports = mongoose.model('products', ProductSchema, 'products');

方法:

exports.selectUsersProductsCount = function (req, res, next) {

Product.aggregate([
{"$group" : {_id:{userid:"$userid" }, count:{$sum:1} } }
],
function(err, result) {
if(err){ res.status(400).json({ success: false, message:'Error processing request '+ err }); }
res.status(201).json({
success: true,
data: result
});
console.log(result);
})

}

结果:

[ { _id: { userid: '5ab655bbb94733156c438112' }, count: 3 },
{ _id: { userid: '5ab425c6f5bff145304092f7' }, count: 1 } ]

我还希望显示用户名字段。我不知道如何使用join。计数正确,但不显示用户名字段。

如何更正aggregate方法的显示:用户 ID、用户名、计数

[ { _id: { userid: '5ab655bbb94733156c438112', username: 'Jon Alon' }, count: 3 },
{ _id: { userid: '5ab425c6f5bff145304092f7', username: 'Jonson Con' }, count: 1 } ]

示例数据:

产品

{
_id:O bjectId(5ab7da972ade533790268f47),
userid:"5ab655bbb94733156c438112",
product_name:"gs",
__v:0
},{
_id: ObjectId(5ab7daa92ade533790268f48),
userid:"5ab655bbb94733156c438112",
product_name:"dg",
__v:0
}

用户

{
_id: ObjectId(5ab655bbb94733156c438112),
username: "rrrr",
email:"rrrr",
__v:0
}

enter image description here

最佳答案

您必须使用 $ lookup函数来实现这一点,但是两个集合之间需要有一些共同的属性。您需要在 UserSchema 或其他一些属性上添加 userId,以便您可以“加入”

在你的例子中你可以尝试

db.product.aggregate([ {$lookup:{ from: "user", localField: "ObjectId(userid)", foreignField: "ObjectId(_id)", as: "username" }}, {"$group" : {_id:{userid:"$userid", username : "$username" }, count:{$sum:1} } } ])

enter image description here

关于Node.js - Angular - MongoDB - 对于 `userid` ,获取 `username`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49471955/

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