来分解我的问题:假设我有5本书,每本书都有作者的详细信息(每本书都有多个作者),以及出版时间的详细信息。因此,我需要5个收藏,每本书一个,在每个收藏中我需要许多关于作者的文件,和一个关于细节的文件?要同时将数据插入到4本书中,我需要执行哪个查询?我正在使用mongodb
des4xlb01#
这将是一个非常不寻常的MongoDB配置。通常,在数据库交互的常规过程中不会创建额外的 * 集合 ,而只创建 * 文档 。如果有一个名为“书籍”的集合,每本书都是该集合中自己的文档,性能会好得多。您可以在每个图书文档中创建一个author作为子文档,但如果有更改,这将需要大量的编写工作,并且维护起来很麻烦。在这种情况下,最好应用关系数据库类型的策略,并创建一个名为“Authors”的单独集合,其中包含一个带有每个作者详细信息的文档。然后,您可以在相应的书籍上存储作者ID数组,并使用$lookup**方法将作者数据与书籍数据连接起来。一次插入多个文档是没有问题的。方法取决于您使用的MongoDB驱动程序。例如,在JavaScript/Node.js中,**insertMany()**接受一个对象数组。
beq87vna2#
插入多个文档集合。insertMany()可以将多个文档插入到集合中。将一个文档数组传递给方法。如果文档没有指定_id字段,MongoDB会将带有ObjectId值的_id字段添加到每个文档中。
db.collectionName.insertMany([{_id:1,name:raj},{_id:2,name:ashwin}])
你可以插入许多这样的文档。_id是可选的,如果你不接受它,那么_id将自动生成。
2条答案
按热度按时间des4xlb01#
这将是一个非常不寻常的MongoDB配置。通常,在数据库交互的常规过程中不会创建额外的 * 集合 ,而只创建 * 文档 。
如果有一个名为“书籍”的集合,每本书都是该集合中自己的文档,性能会好得多。
您可以在每个图书文档中创建一个author作为子文档,但如果有更改,这将需要大量的编写工作,并且维护起来很麻烦。
在这种情况下,最好应用关系数据库类型的策略,并创建一个名为“Authors”的单独集合,其中包含一个带有每个作者详细信息的文档。然后,您可以在相应的书籍上存储作者ID数组,并使用$lookup**方法将作者数据与书籍数据连接起来。
一次插入多个文档是没有问题的。方法取决于您使用的MongoDB驱动程序。例如,在JavaScript/Node.js中,**insertMany()**接受一个对象数组。
beq87vna2#
插入多个文档集合。insertMany()可以将多个文档插入到集合中。将一个文档数组传递给方法。如果文档没有指定_id字段,MongoDB会将带有ObjectId值的_id字段添加到每个文档中。
你可以插入许多这样的文档。_id是可选的,如果你不接受它,那么_id将自动生成。