Existuje několik pravidel, která vám pomohou získat dobrou a hodnotnou odpověď na otázku související s MongoDB.
Níže naleznete některé běžné kategorie a kroky, které vám pomohou se shromažďováním údajů, které vám mohou pomoci rychleji najít dobrou odpověď.
Přiložte prosím všechny dokumenty v textovém formátu, protože snímek obrazovky nelze vložit do editoru :-)
-
Základy – jak se mongoDB vyvíjí, některé skvělé funkce jsou k dispozici ve vyšší verzi – abyste předešli nejasnostem, uveďte svou aktuální verzi mongo a dejte nám vědět, zda se jedná o samostatný systém, sadu replik nebo sdílené prostředí
-
Otázky týkající se výkonu:
- poskytněte prosím výstup statistik provádění – pro dotazy:
db.collection.find({query}).explain("executionStats")
- to poskytne nějaké statistiky o dotazu, indexech, pro agregační rámec:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
- hardwarové specifikace jako ssd, velikost ram, cpus no a dokonce i rychlost hodin, pokud jsou známy
- poskytněte prosím výstup statistik provádění – pro dotazy:
-
Manipulace s daty – protože dotazy jsou založeny na struktuře dokumentu, uveďte platný výpis dokumentu (nebo dokonce více než jeden) a zajistěte, aby byl
mocked
pole odrážejí pole v dotazu, někdy při pokusu o sestavení dotazu nejsme schopni vložit vzorové dokumenty, protože jejich struktura není platná. Také pokud očekáváte určitý výsledek na konci procesu p - připojte očekávaný příklad. -
Problémy se sadou replik/sharding – přidejte prosím
rs.config()
/sh.status()
a odstranit data hostitele (pokud jsou citlivá) -
Máte-li otázku týkající se ovladače/rámce - zobrazte prosím, co bylo provedeno a kde máte problém. Někdy je velmi těžké přeložit dotaz ze syntaxe mongo shellu do syntaxe ovladače/rámce - takže pokud byste mohli zkusit vytvořit tento dotaz v mongoDB shellu - a mít spuštěný příklad - přidejte jej prosím k otázce.
Příklady:
RE:1
Při použití mongo 2.6 na notebooku se systémem Windows nemohu mít sbírku větší než 2 GB, proč?
RE:2
Můj dotaz db.collection.find({isValid:true})
trvá déle než 30 sekund, viz vysvětlující výstup:
{
"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
Mám problém získat poslední 3 prvky pole z každého záznamu v mém agregačním kanálu, mongo 3.2.3
můj dotaz:db.collection.aggregate([{aggregation pipeline}])
schéma dokumentu:
{
"_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
Mám problémy se sadou replik, data se nereplikují na jiný server pomocí mongo 3.2, níže výpis rs.config:
{
"_id" : "rs0",
"version" : 1,
"members" : [
{
"_id" : 1,
"host" : "mongodb0.example.net:27017"
}
]
}
RE:5
Mám agregační dotaz v mongo a mám problém získat zadaný výsledek z c#
řidič
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]
}
}
}
])
můj kód 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();
}
}