Глава 6: Вставка документа в Golang MongoDB

Вставка документа

result, err := collection.InsertOne(
	context.Background(),  // Параметр контекста
	bson.D{   // Определение документа JSON с использованием bson.D
		{"item", "холст"},
		{"qty", 100},
		{"tags", bson.A{"хлопок"}},
		{"size", bson.D{
			{"h", 28},
			{"w", 35.5},
			{"uom", "см"},
		}},
	})
	
// Получение уникального идентификатора, сгенерированного для документа
id := result.InsertedID

Совет: Если вы не знакомы с представлением данных Golang MongoDB, пожалуйста, обратитесь к разделу "Модель данных Golang MongoDB" здесь.

Эквивалент вставки следующего документа JSON:

{
	"item": "холст",
	"qty": 100,
	"tags": ["хлопок"],
	"size": {
		"h": 28,
		"w": 35.5,
		"uom": "см"
	}
}

Запрос вновь вставленного документа

cursor, err := collection.Find(
	context.Background(),
	bson.D{{"item", "холст"}},  // Эквивалентное выражение: {"item": "холст"}
)

Массовая вставка

result, err := collection.InsertMany(
	context.Background(),
	[]interface{}{   // Передача массива документов, вставка данных трех документов
		bson.D{ // Данные документа 1
			{"item", "журнал"},
			{"qty", int32(25)},
			{"tags", bson.A{"пустой", "красный"}},
			{"size", bson.D{
				{"h", 14},
				{"w", 21},
				{"uom", "см"},
			}},
		},
		bson.D{ // Данные документа 2
			{"item", "коврик"},
			{"qty", int32(25)},
			{"tags", bson.A{"серый"}},
			{"size", bson.D{
				{"h", 27.9},
				{"w", 35.5},
				{"uom", "см"},
			}},
		},
		bson.D{ // Данные документа 3
			{"item", "коврик для мыши"},
			{"qty", 25},
			{"tags", bson.A{"гель", "синий"}},
			{"size", bson.D{
				{"h", 19},
				{"w", 22.85},
				{"uom", "см"},
			}},
		},
	})

Запрос всех документов

cursor, err := collection.Find(
	context.Background(),
	bson.D{}, // Передача пустого условия запроса
)