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

Как да решим ефективно проблема, свързан с mongoDB?

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

Моля, вижте по-долу някои общи категории и стъпки, които ще ви помогнат при събирането на данни, които биха могли да ви помогнат да намерите добър отговор по-бързо.

Моля, прикачете всички документи в текстов формат, тъй като екранната снимка не може да бъде поставена в редактора :-)

  1. Основи - с развитието на mongoDB някои страхотни функции са налични в по-висока версия - за да избегнете объркване, моля, дайте текущата си версия на mongo и ни уведомете дали това е самостоятелна система, набор от реплики или разчленена среда

  2. Въпроси относно производителността:

    • моля, предоставете изходна статистика за изпълнение - за заявки:db.collection.find({query}).explain("executionStats") - това ще даде някои статистически данни за заявката, индексите, за рамката за агрегиране:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
    • хардуерни спецификации като ssd, размер на RAM, номер на процесора и дори тактова честота, ако са известни
  3. Манипулиране на данни - тъй като заявките се основават на структурата на документа, моля, предоставете валиден дъмп на документ (или дори повече от един) и се уверете, че mocked полетата отразяват полета в заявката, понякога, когато се опитваме да изградим заявка, не можем да вмъкнем примерни документи, тъй като структурата им не е валидна. Също така, ако очаквате определен резултат в началото на процес p - моля, прикачете очаквания пример.

  4. Проблеми с набор от реплики/разделяне – моля, добавете rs.config() / sh.status() и премахнете данните на хоста (ако са чувствителни)

  5. Ако имате специфичен въпрос за драйвера/рамката - моля, покажете какво е направено и къде имате проблем. Понякога е много трудно да се преведе заявката от синтаксис на mongo shell към синтаксис на драйвер/рамка - така че ако можете да опитате да изградите тази заявка в mongoDB shell - и като имате пример за изпълнение - моля, добавете я към въпроса.

Примери:

RE:1

Използвайки mongo 2.6 на лаптоп с Windows, не мога да имам колекция, по-голяма от 2GB, защо?

RE:2

Моята заявка db.collection.find({isValid:true}) отнема повече от 30 секунди, моля, вижте изхода за обяснение:

{
    "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

Имам проблеми да получа последните 3 елемента на масива от всеки запис в моя конвейер за агрегиране, mongo 3.2.3

моята заявка:db.collection.aggregate([{aggregation pipeline}])

схема на документа:

{
    "_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

Имам проблеми с моя набор от реплики, данните не се репликират на друг сървър, използвайки mongo 3.2, под дъмпа на rs.config:

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

RE:5

Имам заявка за агрегиране в mongo и имам проблеми да получа въведен резултат от c# шофьор

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]
                }
            }
        }
    ])

моят C# код

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();


    }
}

Приятно питане!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да извършвам заявка от Mongoose pre hook в приложение Node.js / Express?

  2. Оперативни фактори, които трябва да се вземат предвид по време на моделиране на данни на MongoDB

  3. MongoDB празни символи

  4. Как да инсталирате MongoDB 4.2 на системи RedHat/ CentOS 7

  5. Изтрийте всичко в база данни на MongoDB