所以我有一个应用程序,它使用MongoDB作为数据库.该应用程序使用了几个集合.

何时以及如何定义数据库的"模式",包括设置所有集合以及所需的索引?

好了,您无法在MongoDB中定义空集合(如果我错了,请纠正我,如果我能做到这一点,它将基本上回答这个问题).我应该 for each 集合插入一个伪值,并使用它来设置所有索引吗?

这方面的最佳实践是什么?

推荐答案

您不能在MongoDB中创建集合

现在来定义"模式".正如我所说,你只需要开始使用一个集合,所以,如果你需要确保一个索引,那就继续这样做吧.没有Collection 创建.第一次修改任何集合(创建索引计数)时,都将有效地创建该集合.

> db.no_such_collection.getIndices()
[ ]
> db.no_such_collection.ensureIndex({whatever: 1})
> db.no_such_collection.getIndices()
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "test.no_such_collection",
                "name" : "_id_"
        },
        {
                "v" : 1,
                "key" : {
                        "whatever" : 1
                },
                "ns" : "test.no_such_collection",
                "name" : "whatever_1"
        }
]

Mongodb相关问答推荐

会话的Mongo-go驱动程序版本.Copy()

Mongoose 排除数组中包含特定嵌套对象的文档

MongoDB $lookup 查找字段值数组

Golang中的Mongo中值运算

如何聚合过滤器嵌套文档并从其他字段中获取值

声明多个模式后无法从数据库中获取数据(mongoose + express + mongodb

mongoose通过引用属性查找文档

Node.js 数据库的抽象层

Clojure 和 NoSQL 数据库

Express 无法 PUT/DELETE 方法.出了什么问题?

NodeJS中的密码重置

如何在 Node.js 中格式化 Mongoose 的日期?

Django admin 和 MongoDB,可能吗?

在 mongodb 中的索引列上查找重复项的快速方法

Mongo: query by key one level deep

mongoose:按字母顺序排序

Mongodb Atlas:管理员未授权执行命令

如何在 MongoDB 中删除此弃用警告,为什么会这样?

试图从 mongoose 获取Collection 列表

MongoError:Can't extract geo keys from object