Hello
@Oussama_Louelkadi,
Welcome to the MongoDB Community forums 
There is one scenario where you can store the budget in the same collection as the user, and that is when you can use the Mongoose Defaults option. Your schemas can define default values for certain fields. If you create a new document without setting that path, the default value will be used.
For example, if your schema looks like this:
const userSchema = new mongoose.Schema({
name: String,
email: String,
password: String,
// other user properties
budget: { type: Number, default: 1000 } //For example, consider 1000
});
In this case, budget is one of the fields in userSchema, so you can use the default value.
However, as you mentioned in your post:
If you want to insert a value in a different collection that will be used after the registration process, you can achieve this by writing your own code in your registration route. Unfortunately, there is no built-in function in Mongoose that specifically handles this case.
Sharing the sample code snippet for your reference:
app.post('/register', async (req, res) => {
// create new user
const newUser = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password
...
});
// save new user to database
await newUser.save();
// create default budget for new user
const newBudget = new Budget({
userId: newUser._id,
amount: 1000 // set default budget amount here
...
});
// save new budget to database
await newBudget.save();
Please note that this is the sample snippet and it is recommended that you thoroughly test the code in a testing environment to ensure it meets all of your use cases and requirements before implementing it in production.
I hope it helps. Let us know if you have any further queries.
Best,
Kushagra