MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara mengatasi masalah terkait mongoDB secara efisien?

Ada beberapa aturan yang akan membantu di sini untuk mendapatkan jawaban yang baik dan berharga untuk pertanyaan terkait MongoDB.

Silakan lihat di bawah ini beberapa kategori umum dan langkah-langkah yang akan membantu mengumpulkan data yang dapat membantu Anda menemukan jawaban yang baik lebih cepat.

Lampirkan semua dokumen dalam format teks karena tangkapan layar tidak dapat ditempelkan ke editor :-)

  1. Dasar-dasar - seiring dengan berkembangnya mongoDB, beberapa fungsi keren tersedia di versi yang lebih tinggi - untuk menghindari kebingungan, berikan versi mongo Anda saat ini dan beri tahu kami jika ini adalah sistem mandiri, kumpulan replika, atau lingkungan sharded

  2. Pertanyaan tentang kinerja:

    • harap berikan keluaran statistik eksekusi - untuk kueri:db.collection.find({query}).explain("executionStats") - yang akan memberikan beberapa statistik tentang kueri, indeks, untuk kerangka kerja agregasi:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
    • Spesifikasi perangkat keras seperti SSD, ukuran ram, no CPU, dan bahkan kecepatan clock jika diketahui
  3. Manipulasi data - karena kueri didasarkan pada struktur dokumen, harap berikan dump dokumen yang valid (atau bahkan lebih dari satu) dan pastikan bahwa mocked bidang mencerminkan bidang dalam kueri, terkadang saat mencoba membuat kueri, kami tidak dapat menyisipkan dokumen contoh karena strukturnya tidak valid. Juga jika Anda mengharapkan hasil tertentu pada akhir proses p - harap lampirkan contoh yang diharapkan.

  4. Masalah set/sharding replika - tambahkan rs.config() / sh.status() dan hapus data host (jika sensitif)

  5. Jika Anda memiliki pertanyaan khusus driver/kerangka - harap tampilkan apa yang telah dilakukan dan di mana Anda mengalami masalah. Terkadang sangat sulit untuk menerjemahkan kueri dari sintaksis mongo Shell ke sintaks driver/kerangka - jadi jika Anda dapat mencoba membuat kueri itu di shell mongoDB - dan menjalankan contoh - harap tambahkan ke pertanyaan.

Contoh:

RE:1

Menggunakan mongo 2.6 di laptop windows saya tidak dapat memiliki koleksi lebih dari 2GB, mengapa?

RE:2

Permintaan saya db.collection.find({isValid:true}) membutuhkan waktu lebih dari 30 detik, silakan lihat penjelasan output:

{
    "queryPlanner" : {
        "plannerVersion" : 1,
        "namespace" : "test.collectionName",
        "indexFilterSet" : false,
        "parsedQuery" : {},
        "winningPlan" : {
            "stage" : "COLLSCAN",
            "direction" : "forward"
        },
        "rejectedPlans" : []
    },
    "executionStats" : {
        "executionSuccess" : true,
        "nReturned" : 6,
        "executionTimeMillis" : 0,
        "totalKeysExamined" : 0,
        "totalDocsExamined" : 6,
        "executionStages" : {
            "stage" : "COLLSCAN",
            "nReturned" : 6,
            "executionTimeMillisEstimate" : 0,
            "works" : 8,
            "advanced" : 6,
            "needTime" : 1,
            "needYield" : 0,
            "saveState" : 0,
            "restoreState" : 0,
            "isEOF" : 1,
            "invalidates" : 0,
            "direction" : "forward",
            "docsExamined" : 6
        }
    },
    "serverInfo" : {
        "host" : "greg",
        "port" : 27017,
        "version" : "3.3.6-229-ge533634",
        "gitVersion" : "e533634d86aae9385d9bdd94e15d992c4c8de622"
    },
    "ok" : 1.0
}

RE:3

Saya mengalami kesulitan untuk mendapatkan 3 elemen larik terakhir dari setiap catatan di saluran agregasi saya, mongo 3.2.3

permintaan saya:db.collection.aggregate([{aggregation pipeline}])

skema dokumen:

{
    "_id" : "john",
    "items" : [{
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e4"),
                    "grad" : true
                }
            ]
        }, {
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e5"),
                    "grad" : true
                }
            ]
        }, {
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e6"),
                    "grad" : true
                }
            ]
        }, {
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e7"),
                    "grad" : true
                }
            ]
        }, {
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e8"),
                    "grad" : true
                }
            ]
        }
    ]
}

//expected result

{
    "_id" : "john",
    "items" : [{
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e4"),
                    "grad" : true
                }
            ]
        }, {
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e5"),
                    "grad" : true
                }
            ]
        }, {
            "name" : "John",
            "items" : [{
                    "school" : ObjectId("56de35ab520fc05b2fa3d5e6"),
                    "grad" : true
                }
            ]
        }
    ]
}

RE:4

Saya memiliki masalah dengan set replika saya, data tidak direplikasi ke server lain menggunakan mongo 3.2, di bawah rs.config dump:

   {
       "_id" : "rs0",
       "version" : 1,
       "members" : [
          {
             "_id" : 1,
             "host" : "mongodb0.example.net:27017"
          }
       ]
    }

RE:5

Saya memiliki kueri agregasi di mongo dan mengalami kesulitan untuk mendapatkan hasil yang diketik dari c# pengemudi

startDate = new Date() // Current date
startDate.setDate(startDate.getDate() - 7) // Subtract 7 days

db.collection.aggregate([{
            $match : {
                LastUpdate : {
                    $gte : startDate
                }
            }
        }, {
            $sort : {
                LastUpdate : -1
            }
        }, //sort data
        {
            $group : {
                _id : "$Emp_ID",
                documents : {
                    $push : "$$ROOT"
                }
            }
        }, {
            $project : {
                _id : 1,
                documents : {
                    $slice : ["$documents", 3]
                }
            }
        }
    ])

kode c# saya

public static void Main()
{
    var client = new MongoClient("mongodb://localhost:27017");
    var database = client.GetDatabase("test");

    var collection = database.GetCollection<InnerDocument>("irpunch");


    var aggregationDocument = collection.Aggregate()
        .Match(x=>x.LastUpdate> DateTime.Now.AddDays(-40))
        .SortByDescending(x => x.LastUpdate)
        .Group(BsonDocument.Parse("{ _id:'$Emp_ID', documents:{ '$push':'$$ROOT'}}"))
        // how to get projection result as typed object ??
        .Project(BsonDocument.Parse("{ _id:1, documents:{ $slice:['$documents', 3]}}")).ToList();


    }
}

Selamat Bertanya!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengurutkan mongodb dengan cara yang tidak peka huruf besar-kecil

  2. Mengintegrasikan ClusterControl dengan SNMP - Bukti Konsep:Bagian Satu

  3. Pengembangan Basis Data Python dan MongoDB

  4. cara menanyakan objek anak di mongodb

  5. Bagaimana cara mencatat kueri saya di MongoDB C# Driver 2.0?