我正在尝试将我的MongoDB植入Docker。 我的docker-compose.yml文件非常简单,这是我的 音量:
...
volumes:
- ./mongo/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
- ./mongo/mongod.conf:/etc/mongod.conf:ro
- ./mongo/mongo-volume:/data/db
...
我已将init-mongo.js映射为一个卷,这是其内容:
db.createUser({
user: 'root',
pwd: 'toor',
roles: [
{
role: 'readWrite',
db: 'testDB',
},
],
});
db.createCollection('users', { capped: false });
db.createCollection('test', { capped: false });
db.test.insert([
{ "item": 1 },
{ "item": 2 },
{ "item": 3 },
{ "item": 4 },
{ "item": 5 }
]);
创建用户root
和数据库testDB
以及集合users
和test
都没有问题。
问题在于db.test.insert([])
似乎一起丢失了,没有文档插入test
集合中。
任何想法为何如此? 我绝对很乐意让这个工作正常进行,并非常感谢您提供的任何帮助。
谢谢, -凯文
答案 0 :(得分:3)
将您的init-mongo.js
文件更改为该文件,以首先选择新数据库,然后创建集合,最后将数据植入其中:
db.createUser({
user: 'root',
pwd: 'toor',
roles: [
{
role: 'readWrite',
db: 'testDB',
},
],
});
db = new Mongo().getDB("testDB");
db.createCollection('users', { capped: false });
db.createCollection('test', { capped: false });
db.test.insert([
{ "item": 1 },
{ "item": 2 },
{ "item": 3 },
{ "item": 4 },
{ "item": 5 }
]);
然后登录到mongo
shell(使用mongo -u [admin_username] -p
)并检查testDB
集合中的数据:
use testDB;
db.getCollection('test').find()
这将显示:
{ "_id" : ObjectId("5f947906cc845282e5711728"), "item" : 1 }
{ "_id" : ObjectId("5f947906cc845282e5711729"), "item" : 2 }
{ "_id" : ObjectId("5f947906cc845282e571172a"), "item" : 3 }
{ "_id" : ObjectId("5f947906cc845282e571172b"), "item" : 4 }
{ "_id" : ObjectId("5f947906cc845282e571172c"), "item" : 5 }
答案 1 :(得分:0)
我认为您已连接到管理数据库,对吗?用户通常是在管理数据库上创建的。
在运行插入操作之前,请尝试使用“ testDB”数据库重新初始化数据库。