Come risolvere efficacemente il problema relativo a mongoDB?

Ci sono molte domande nel tag monoDB su diversi problemi, e vedo che ci sono anche alcuni commenti che richiedono dati simili.

Quindi fornisce How To Ask a Good Question ma questo non è correlato a MongoDB. C’è qualche documento valido che mi permetta di porre domande valide e preziose?

Ci sono alcune regole che aiuteranno qui a ottenere una risposta valida e valida per la domanda relativa a MongoDB.

Consulta di seguito alcune categorie e passaggi comuni che ti aiuteranno a raccogliere dati che potrebbero aiutarti a trovare una buona risposta più velocemente.

Si prega di albind tutti i documenti in formato testo poiché l’immagine non può essere incollata nell’editor 🙂

  1. Nozioni di base – come evolve mongoDB alcune funzioni interessanti sono disponibili nella versione superiore – per evitare confusione ti preghiamo di dare la tua attuale versione di mongo e facci sapere se questo è un sistema standalone, un set di repliche o un ambiente più grande

  2. Domande sulla performance:

    • fornisci output di statistiche di esecuzione – per le query: db.collection.find({query}).explain("executionStats") – che fornirà alcune statistiche su query, indici, per il framework di aggregazione: db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
    • specifiche hardware come ssd, dimensione della ram, cpus no e anche la velocità di clock se nota
  3. Manipolazione dei dati: poiché le query si basano sulla struttura del documento, fornire un dump valido del documento (o anche più di una) e assicurarsi che i campi mocked riflettano i campi nella query, a volte quando si tenta di creare una query, non è ansible inserire documenti di esempio non è valido Inoltre, se si prevede di ottenere determinati risultati al processo p, albind l’esempio previsto.

  4. Problemi di set / rs.config() replica – aggiungere rs.config() / sh.status() e rimuovere i dati dell’host (se sensibili)

  5. Se hai una domanda specifica per driver / framework, mostra cosa è stato fatto e dove hai problemi. A volte è molto difficile tradurre la query dalla syntax della shell mongo alla syntax driver / framework – quindi se si può provare a creare quella query nella shell mongoDB – e con l’esempio in esecuzione – si prega di aggiungerla alla domanda.

Esempi:

RE: 1

Usando mongo 2.6 su Windows laptop non riesco ad avere una raccolta superiore a 2 GB, perché?

RE: 2

La mia query db.collection.find({isValid:true}) richiede più di 30 secondi, per favore vedi l’output di spiegazione:

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

Sto avendo problemi a ottenere gli ultimi 3 elementi di array da ogni record della mia pipeline di aggregazione, mongo 3.2.3

la mia domanda: db.collection.aggregate([{aggregation pipeline}])

schema del documento:

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

Ho problemi con il mio set di repliche, i dati non sono replicati su altri server usando mongo 3.2, sotto rs.config dump:

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

RE: 5

Ho una query di aggregazione in mongo e ho problemi a ottenere il risultato digitato dal driver 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] } } } ]) 

il mio codice c #

 public static void Main() { var client = new MongoClient("mongodb://localhost:27017"); var database = client.GetDatabase("test"); var collection = database.GetCollection("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(); } } 

Chiedere felice!