MongoDB独特索引创建

时间:2015-10-24 18:58:28

标签: mongodb indexing

我想在MongoDB数据库中的字段上创建一个唯一索引。我知道我可以通过我的应用程序强制执行它,但我也想在MongoDB数据库上强制执行它!

我正在查看以下文档:

https://docs.mongodb.org/manual/tutorial/create-an-index/

我没有得到的是谁在运行以下代码?

db.records.createIndex( { userid: 1 } )

在这种情况下,db对象是什么?是否有我可以考虑的初始化脚本,以便我可以预先填充我的集合(如果它们不存在),如果它们不存在则应用索引?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在您的应用程序中强制执行唯一键约束是不切实际的 - 只需开始考虑如何执行此操作...

您正在阅读的文章显示了mongo shell命令。安装mongo后,打开shell,键入mongo,您将看到mongo提示符。这是一个完整的JavaScript执行环境(基于V8),所以你可以在这里做任何你可以在javascript中做的任何事情。

命令的db部分是指您当前使用的mongo数据库。当您启动mongo shell时,您将自动连接到测试数据库。当您在shell中use records时,您正在更改数据库。

通常,我发现编写我推送到mongo shell的脚本更容易:在shell中重放多行命令很繁琐。这是你的例子。

// Example collection initialization script
// USE:
//   mongo < thisFile

// connect to mongo test database
use test

// create a unique index on records
// will create collection if it does not already exist
db.records.createIndex({userId:1}, {unique:true})

// insert some test data
db.records.insert({userId:1, name:'bob'})
db.records.insert({userId:2, name:'nancy'})

// unique does not mean the field must exist in the inserted doc
db.records.insert({name:'no userId is OK'})
// but there can be only one doc without a userId
db.records.insert({name:'ohhh nooo'})

// display indexes
db.records.getIndexes()

// drop the collection so we can test the initialization script
//db.records.drop()