MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

5 начина за вмъкване на документи в MongoDB

MongoDB предоставя много начини за вмъкване на документи в колекция.

Ето 5 начина за вмъкване на документи в колекция, когато използвате mongo shell.

insertOne() Метод

insertOne() метод вмъква един документ в колекция.

Пълното му име е db.collection.insertOne() , където collection е името на колекцията, в която да вмъкнете документа.

Ето пример за вмъкване на документ в колекция, наречена pets :

db.pets.insertOne( { 
    name: "Scratch", 
    type: "Cat" 
    } )

Резултат:

{
	"acknowledged" : true,
	"insertedId" : ObjectId("5fe2d15637b49e0faf1af214")
}

db.collection.insertOne() метод връща документ, съдържащ:

  • Булева acknowledged като true ако операцията се изпълняваше със загриженост за запис или false ако загрижеността за запис е деактивирана.
  • Поле insertedId с _id стойност на вмъкнатия документ.

insertMany() Метод

insertMany() методът е подобен на insertOne() , с изключение на това, че вмъква множество документи в колекция.

Също така по подобен начин на insertOne() , пълното му име е db.collection.insertMany() , където collection е името на колекцията, в която да вмъкнете документа. Това се отнася за всички методи, изброени в тази статия.

Ето пример за използване на db.collection.insertMany() за да вмъкнете множество документи в колекция, наречена pets :

db.pets.insertMany([
    { _id: 1, name: "Wag", type: "Dog" },
    { _id: 2, name: "Bark", type: "Dog" },
    { _id: 3, name: "Meow", type: "Cat" }
    ])

Резултат:

{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] } 

db.collection.insertMany() метод връща документ, съдържащ:

  • Булева acknowledged като true ако операцията се изпълняваше със загриженост за запис или false ако загрижеността за запис е деактивирана.
  • Масив от _id стойности за всеки успешно вмъкнат документ.

insert() Метод

insert() методът е като комбинация от insertOne() и insertMany() . Позволява ви да вмъкнете или един документ, или няколко документа в колекция.

Ето пример за използване на db.collection.insert() за да вмъкнете един документ:

db.pets.insert(
    { name: "Bruce", type: "Bat" }
    )

Резултат:

WriteResult({ "nInserted" : 1 })

Когато се вмъкне един документ, db.collection.insert() връща WriteResult обект. Когато се вмъкне масив от документи, той връща BulkWriteResult обект.

Ето пример за използване на db.collection.insert() за да вмъкнете няколко документа.

db.pets.insert([
    { _id: 1, name: "Wag", type: "Dog" },
    { _id: 2, name: "Bark", type: "Dog" },
    { _id: 3, name: "Meow", type: "Cat" }
    ])

Резултат:

BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 3,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})

Както споменахме, BulkWriteResult обектът се връща при вмъкване на масив от документи.

bulkWrite() Метод

bulkWrite() методът ви позволява да извършвате групови операции за запис.

Всъщност, insertMany() вече изпълнява операции за групово вмъкване. Същото с insert() при вмъкване на масив от документи. Но bulkWrite() ви позволява да извършвате групови операции за вмъкване, актуализиране и премахване, всичко това от едно извикване на метод.

Пример:

db.pets.bulkWrite([
    { insertOne: { "document": { "_id": 1, "name": "Bubbles", "type": "Fish" }}},
    { insertOne: { "document": { "_id": 2, "name": "Wag", "type": "Dog" }}},
    { updateOne : {
        "filter" : { "_id" : 3 },
        "update" : { $set : { "name" : "Fluffy", "type" : "Cat" } },
        "upsert" : true
    } },
    { replaceOne : {
        "filter" : { "_id" : 4 },
        "replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 },
        "upsert" : true
    } }
])

Резултат:

{
	"acknowledged" : true,
	"deletedCount" : 0,
	"insertedCount" : 2,
	"matchedCount" : 0,
	"upsertedCount" : 2,
	"insertedIds" : {
		"0" : 1,
		"1" : 2
	},
	"upsertedIds" : {
		"2" : 3,
		"3" : 4
	}
}

В този случай колекцията всъщност не е съществувала (изпуснах я след предишния пример) и така единствените документи, които сега са в колекцията, са посочените в този пример.

Нека да разгледаме колекцията.

db.pets.find()

Резултат:

{ "_id" : 1, "name" : "Bubbles", "type" : "Fish" }
{ "_id" : 2, "name" : "Wag", "type" : "Dog" }
{ "_id" : 3, "name" : "Fluffy", "type" : "Cat" }
{ "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }

Както се очакваше, и четирите документа бяха поставени.

Операция Upsert

Това ни води до нашия пети метод за вмъкване на документи в колекция в MongoDB – операцията upsert.

Това е по-скоро условен метод за вмъкване на документи. Upsert е опция, която можете да използвате при операции за актуализиране. Той вмъква нов документ само ако посоченият документ все още не съществува. Ако съществува, оригиналният документ се актуализира (и не е вмъкнат документ).

Вече сме виждали примери за разстройства. В предишния пример посочихме "upsert" : true когато изпълнявате updateOne и replaceOne операции. Това доведе до вмъкване на два документа, тъй като колекцията не съдържа документи, които да отговарят на техните критерии за филтриране.

Ето още един пример за разстройство. Този път ще го използваме в updateOne() метод.

db.pets.updateOne( 
    { name: "Harry" },
    { $set: { type: "Hamster" } },
    { upsert: true }
    )

Резултат:

{
	"acknowledged" : true,
	"matchedCount" : 0,
	"modifiedCount" : 0,
	"upsertedId" : ObjectId("5fe3dc44d991410169410524")
}

Тук искахме да настроим всички домашни любимци, наречени Хари, да бъдат хамстери. Но нямаше домашни любимци, наречени Хари, така че беше извършено разтърсване.

Следните методи приемат upsert параметър:

  • update()
  • updateOne()
  • updateMany()
  • findAndModify()
  • findOneAndUpdate()
  • findOneAndReplace()

Следователно, когато upsert: true е посочено, тези методи ще изпълнят операция upsert, когато се опитат да актуализират несъществуващ документ.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Настъпи изчакване след 30 000 ms избор на сървър с помощта на CompositeServerSelector

  2. Наблюдение на екземпляри на MongoDB с помощта на услуга за наблюдение на MongoDB (MMS)

  3. инсталирайте mongoDB (подчинен процес е неуспешен, излезе с грешка номер 100)

  4. Получавайте известия за променени документи в mongodb

  5. MongoDB директория с данни /data/db не е намерена