Det finns några regler som hjälper här för att få bra och värdefulla svar på MongoDB-relaterade frågor.
Se nedan några vanliga kategorier och steg som hjälper dig att samla in data som kan hjälpa dig att hitta ett bra svar snabbare.
Vänligen bifoga alla dokument i textformat eftersom skärmdumpen inte kan klistras in i editorn :-)
-
Grunderna - när mongoDB utvecklas finns några coola funktioner tillgängliga i högre version - för att undvika förvirring, vänligen ange din nuvarande mongo-version och låt oss veta om detta är ett fristående system, replikuppsättning eller fragmenterad miljö
-
Frågor om prestanda:
- vänligen tillhandahåll exekveringsstatistik - för frågor:
db.collection.find({query}).explain("executionStats")
- som ger lite statistik om fråga, index, för aggregeringsramverket:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
- hårdvaruspecifikationer som ssd, ramstorlek, cpus nr och även klockhastighet om känd
- vänligen tillhandahåll exekveringsstatistik - för frågor:
-
Datamanipulation - eftersom frågor är baserade på dokumentstruktur, vänligen tillhandahåll giltig dokumentdump (eller till och med mer än en) och se till att
mocked
fält återspeglar fält i frågan, ibland när vi försöker skapa en fråga kan vi inte infoga exempeldokument eftersom strukturen inte är giltig. Även om du förväntar dig ett visst resultat vid nedgången av process p - bifoga förväntat exempel. -
Replica set/sharding problem - lägg till
rs.config()
/sh.status()
och ta bort värddata (om känslig) -
Om du har en drivrutins-/ramspecifik fråga - vänligen visa vad som gjordes och var är du har problem. Ibland är det väldigt svårt att översätta fråga från mongo-skalsyntax till drivrutins-/ramsyntax - så om du kan försöka bygga den frågan i mongoDB-skal - och ha ett körande exempel - lägg till den i frågan.
Exempel:
RE:1
När jag använder mongo 2.6 på en bärbar dator med Windows kan jag inte ha en samling större än 2 GB, varför?
RE:2
Min fråga db.collection.find({isValid:true})
tar mer än 30 sekunder, se förklara utdata:
{
"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
Jag har problem med att hämta de tre sista arrayelementen från varje post i min aggregeringspipeline, mongo 3.2.3
min fråga:db.collection.aggregate([{aggregation pipeline}])
dokumentschema:
{
"_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
Jag har problem med min replikuppsättning, data replikeras inte till annan server med mongo 3.2, nedan rs.config dump:
{
"_id" : "rs0",
"version" : 1,
"members" : [
{
"_id" : 1,
"host" : "mongodb0.example.net:27017"
}
]
}
RE:5
Jag har en aggregeringsfråga i mongo och har problem med att få maskinskrivna resultat från c#
förare
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]
}
}
}
])
min c#-kod
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();
}
}