MongoParseError: options useCreateIndex, useFindAndModify are not supported

I tried to run it and it said an error like the title. and this is my code:

const URI = process.env.MONGODB_URL;


mongoose.connect(URI, {
useCreateIndex: true,
useFindAndModify: false,
useNewUrlParser: true,
useUnifiedTopology: true
}, err => {
if(err) throw err;
console.log('Connected to MongoDB!!!')
})

I set the MONGODB_URL in .env :

MONGODB_URL = mongodb+srv://username:<password>@cluster0.accdl.mongodb.net/website?retryWrites=true&w=majority

How to fix it?

112348 次浏览

From the Mongoose 6.0 docs:

useNewUrlParser, useUnifiedTopology, useFindAndModify, and useCreateIndex are no longer supported options. Mongoose 6 always behaves as if useNewUrlParser, useUnifiedTopology, and useCreateIndex are true, and useFindAndModify is false. Please remove these options from your code.

Mongoose.connect(
DB_URL,
async(err)=>{
if(err) throw err;
console.log("conncted to db")
}
)

I have the same issue. Instaead

mongoose.connect(URI, {
useCreatendex: true,
useFindAndModify: false,
useNewUrlParser: true,
useUnifiedTopology: true
}, err => {
if(err) throw err;
console.log('Connected to MongoDB!!!')
})

try this:

mongoose.connect(URI,
err => {
if(err) throw err;
console.log('connected to MongoDB')
});

//this is working for me at date/version (08-2021

const mongoose = require('mongoose');
var url = "mongodb+srv://username:<password>@cluster0.accdl.mongodb.net/website?
retryWrites=true&w=majority";
mongoose.connect(url, function(err, db) {
if (err) throw err;
console.log("Database created!");
db.close();
});

Same problem was with me but if you remove useCreateIndex, useFindAndModify it will solve the problem just write :

const URI = process.env.MONGODB_URL;


mongoose.connect(URI, {


useNewUrlParser: true,


useUnifiedTopology: true


}, err => {
if(err) throw err;
console.log('Connected to MongoDB!!!')
});

It worked for me.

const URI = process.env.MONGODB_URL;


mongoose.connect(URI, {
//useCreatendex: true,
//useFindAndModify: false,
useNewUrlParser: true,
useUnifiedTopology: true
}, err => {
if(err) throw err;
console.log('Connected to MongoDB!!!')
})

Use this to check your database connection:

const mongoose = require("mongoose");
const url = ... /* path of your db */;


//to connect or create our database
mongoose.connect(url, { useUnifiedTopology : true, useNewUrlParser : true , }).then(() => {
console.log("Connection successfull");
}).catch((e) => console.log("No connection"))
const URI = process.env.MONGODB_URL;
mongoose.connect(URI, { useUnifiedTopology: true }
);


const connection = mongoose.connection;
connection.once('open', () => {
console.log("MongoDB database connection established successfully");
} )

enter image description here

The error is because of the new version of the mongoose i.e version 6.0.6.

As the documentation says:

No More Deprecation Warning Options

useNewUrlParser, useUnifiedTopology, useFindAndModify, and useCreateIndex are no longer supported options. Mongoose 6 always behaves as if useNewUrlParser, useUnifiedTopology, and useCreateIndex are true, and useFindAndModify is false. Please remove these options from your code.

Also, there are some major changes in the new version.

For more info visit https://mongoosejs.com/docs/migrating_to_6.html#no-more-deprecation-warning-options

import mongoose from 'mongoose';
    

const db = process.env.MONGOURI;
    

const connectDB = async () => {
try {
console.log(db);
await mongoose.connect(`${db}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('MongoDB connected');
} catch (error) {
console.log(error.message);
process.exit(1);
}
};
    

    

export default connectDB;

remove usecreateindex, usefindandmodify options

const URI = process.env.MONGODB_URL;


mongoose.connect(URI, {
useNewUrlParser: true,
useUnifiedTopology: true
}, err => {
if(err) throw err;
console.log('Connected to MongoDB!!!')
})

No More Deprecation Warning Options

useNewUrlParser, useUnifiedTopology, useFindAndModify, and useCreateIndex are no longer supported options. Mongoose 6 always behaves as if useNewUrlParser, useUnifiedTopology, and useCreateIndex are true, and useFindAndModify is false. Please remove these options from your code.

src --> https://mongoosejs.com/docs/migrating_to_6.html#no-more-deprecation-warning-options

// No longer necessary:
mongoose.set('useFindAndModify', false);


await mongoose.connect('mongodb://localhost:27017/test', {
useNewUrlParser: true, // <-- no longer necessary
useUnifiedTopology: true // <-- no longer necessary
});

October 27th 2021 Without a try catch it won't work. I am just posting this to keep everyone up to date with mongo connections.

    const uri = process.env.ATLAS_CONNECTION;
mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology:
true });


const connection = mongoose.connection;




try{
connection.once('open', () => {
console.log("MongoDB database connection established
successfully");
})
} catch(e) {
console.log(e);
}


function close_connection() {
connection.close();
}

Connection Established

I faced the same error. Just remove the "useCreateIndex: true" and it will work but make sure the mongoDB service is running on your local machine in the first place ~ brew services start mongodb-community@5.0 :) #HappyCoding

enter image description here

When I commented useNewUrlParser and useCreateIndex it worked for me.

useNewUrlParser, useUnifiedTopology, useFindAndModify, and useCreateIndex are no longer supported options.

basically, just remove that object and you'll be fine:)

mongoose.connect(URL,{
}).then(()=>{
console.log('database connected')
}).catch(err=>{
console.log('database not connected',err)
})

I experienced same thing, all i did was to just omit both (useFindAndModify: false) and (useCreateIndex), the reason being that my mongoose version never supported any of this..

Sure this will work for you.

I have faced the same error the new mongoose version does already have these options by default for you so all you need to do is to remove these options and it will work perfectly.

The asPromise() Method for Connections Mongoose connections are no longer thenable. This means that await mongoose.createConnection(uri) no longer waits for Mongoose to connect. Use mongoose.createConnection(uri).asPromise() instead.

// The below no longer works in Mongoose 6

await mongoose.createConnection(uri);

// Do this instead

 await mongoose.createConnection(uri).asPromise();

const ConnectDB = async ()=>{ try{ const con= await mongoose.connect("mongodb+srv://MahmoudReda:01102306392@cluster0.eqhn13z.mongodb.net/?retryWrites=true&w=majority",{ useUnifiedTopology:true, // useNewUrlParser:true, // useCreateIndex:true }) console.log("the connection is stable"); } catch(error) { console.log(error.message) process.exit(1); } }

this code is working well useNewUrlParser and useCreateIndex not supported

Options useCreateIndex, useFindAndModify are not supported in version v6

try {
await mongoose.connect(process.env.MONGODB_URL, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log("Connect successfully!");
} catch (error) {
console.log("Connect Failure!");
}

in new mongodb version you dont't have to use those: useCreateIndex: true, useFindAndModify: false, useNewUrlParser: true, useUnifiedTopology: true