Ci sono alcune regole che aiuteranno qui a ottenere una risposta valida e preziosa 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 allegare tutti i documenti in formato testo poiché lo screenshot non può essere incollato nell'editor :-)
-
Nozioni di base - man mano che mongoDB si evolve, alcune funzioni interessanti sono disponibili in una versione successiva - per evitare confusione, fornisci la tua versione mongo corrente e facci sapere se si tratta di un sistema autonomo, di un set di repliche o di un ambiente partizionato
-
Domande sulle prestazioni:
- fornisci l'output delle statistiche di esecuzione - per le query:
db.collection.find({query}).explain("executionStats")
- che fornirà alcune statistiche su query, indici, per framework di aggregazione:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
- specifiche hardware come ssd, dimensione ram, cpus no e persino velocità di clock se nota
- fornisci l'output delle statistiche di esecuzione - per le query:
-
Manipolazione dei dati - poiché le query si basano sulla struttura del documento, fornisci un dump del documento valido (o anche più di uno) e assicurati che
mocked
i campi riflettono i campi nella query, a volte quando si tenta di creare una query, non siamo in grado di inserire documenti di esempio poiché la loro struttura non è valida. Inoltre, se ti aspetti un determinato risultato alla fine del processo p, allega l'esempio previsto. -
Problemi di set di repliche/sharding:aggiungi
rs.config()
/sh.status()
e rimuovere i dati dell'host (se sensibili) -
Se hai domande specifiche sul driver/framework, mostra cosa è stato fatto e dove hai riscontrato il problema. A volte è molto difficile tradurre la query dalla sintassi della shell mongo alla sintassi del driver/framework, quindi se puoi provare a creare quella query nella shell mongoDB e avere un esempio in esecuzione, aggiungilo alla domanda.
Esempi:
RE:1
Utilizzando mongo 2.6 su laptop Windows 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, vedere la spiegazione dell'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
Ho problemi a ottenere gli ultimi 3 elementi dell'array da ogni record nella 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 vengono replicati su altri server utilizzando mongo 3.2, sotto il dump di rs.config:
{
"_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 da c#
conducente
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<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();
}
}