在猫鼬中创建索引

Mid*_*ddi 9 mongoose mongodb node.js

一小时后如何从我的 mongo 数据库中删除项目?

我见过

db.Item.createIndex({ "createdAt": 1 }, { expireAfterSeconds: 3600 })
Run Code Online (Sandbox Code Playgroud)

抛出,但我如何在 nodejs 中实现它?

我的数据库条目看起来像这样

{
"_id": {
    "$oid": "5b4b64bc8c6e8add083431a3"
},
"location": {
    "lat": 59.924209956924315,
    "lng": 10.70636168616943
},
"name": "Richard Middleton",
"address": "Espresso House",
"message": "sdsd",
"createdAt": {
    "$date": "2018-07-15T15:14:04.573Z"
},
"updatedAt": {
    "$date": "2018-07-15T15:14:04.573Z"
},
Run Code Online (Sandbox Code Playgroud)

我尝试在我的 db.Item.find() 之前为我的 get 请求运行它,但没有运气。

小智 12

创建索引的两种方式。第一的

const Schema = mongoose.Schema;
let user = new Schema({
    email: {
        type: String,
        required: true,
        index: true       //---Index----
});
module.exports = mongoose.model('User', user);
Run Code Online (Sandbox Code Playgroud)

第二种方法

const Schema = mongoose.Schema;
let user = new Schema({
    email: {
        type: String,
        required: true
});
user.index({ email: 1 });    //---Index----
module.exports = mongoose.model('User', user);
Run Code Online (Sandbox Code Playgroud)

执行此操作时,如果您收到警告(我使用的是 MongoDB:4.2.8 和 Mongoose:5.9.20)

DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
Run Code Online (Sandbox Code Playgroud)

然后您可能需要将“useCreateIndex: true”添加到您的 mongoose.connect

mongoose.connect(Uri, { useNewUrlParser: true, useUnifiedTopology: true, 
useCreateIndex: true });
Run Code Online (Sandbox Code Playgroud)


Ash*_*shh 7

createIndex 是 Mongodb 的函数。

在猫鼬中,它被重命名为 index

Item.index({ "createdAt": 1 }, { expireAfterSeconds: 3600 })
Run Code Online (Sandbox Code Playgroud)


Mid*_*ddi 1

以防万一有人遇到这个问题,我正在使用 mlab 并在数据库中有和索引选项卡。我刚刚添加了

{ "createdAt": 1 }
Run Code Online (Sandbox Code Playgroud)

并从复选框中选择 TTL 并添加我的时间(以秒为单位)。