Austin Hunter
Austin Hunter

Reputation: 394

Finding a document, editing it, and putting it back in MongoDB

I am using mongodb and I want to be able to edit a document and reinsert it WITHOUT duplicates. So far i have tried collection.findAndModify() but I couldn't get that to work. I have a collection like this:

UserProfiles = [
		{
			userProfileID: 1,
			firstName: 'Austin',
			lastName: 'Hunter',
			email: 'ahun.....com',
			token: '',
			platform: '',
			password: 'incorrect',
			companyProfileID: 1,
			authentication: '',
			UserTopics: [

I want to be able to do this:

1 - grab the profile out of the object via searching for email match.

2 - when the email matches, edit the token and platform item.

3 - then put the document back in with no duplicates. So I can't just insert it again because that duplicates it.

Can anyone help me out on figuring this out?

Code:

function registerUser(email, token, platform) {
	MongoClient.connect(url, function(err, db) {
    	if (err) {
			console.log(err);
    	} else {
			console.log("We are connected");
    	}
		
		var collection = db.collection('UserProfile');
		collection.findAndModify({
        	query: { email: email },
        	update: { token: token, platform: platform }
        });
        db.close();
	

Upvotes: 1

Views: 62

Answers (1)

Gandalf the White
Gandalf the White

Reputation: 2465

modelname.findOneAndUpdate({ email: var_email}, { $set: { token: var_token, platform: var_platform}}, { new: true }, function(err, doc) 
{
   //doc here has updated document, in case you need it. 
});

var_email etc. is your variable name and email is field name in database.

{ new: true } - This part is used to fetch updated document, you can chose to not have this in your code but then you wont get updated document in response.

Upvotes: 4

Related Questions