Existem algumas regras que ajudarão aqui a obter respostas boas e valiosas para perguntas relacionadas ao MongoDB.
Veja abaixo algumas categorias e etapas comuns que ajudarão na coleta de dados que podem ajudá-lo a encontrar uma boa resposta mais rapidamente.
Anexe todos os documentos em formato de texto, pois a captura de tela não pode ser colada no editor :-)
-
Básico - à medida que o mongoDB evolui, algumas funções interessantes estão disponíveis na versão superior - para evitar confusão, forneça sua versão atual do mongo e informe-nos se este é um sistema autônomo, conjunto de réplicas ou ambiente fragmentado
-
Dúvidas sobre o desempenho:
- forneça a saída das estatísticas de execução - para consultas:
db.collection.find({query}).explain("executionStats")
- que fornecerá algumas estatísticas sobre consulta, índices, para estrutura de agregação:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
- especificações de hardware como ssd, tamanho de ram, sem cpus e até mesmo velocidade de clock, se conhecido
- forneça a saída das estatísticas de execução - para consultas:
-
Manipulação de dados - como as consultas são baseadas na estrutura do documento, forneça um despejo de documento válido (ou até mais de um) e certifique-se de quemocked
campos estão refletindo campos na consulta, às vezes ao tentar construir a consulta, não conseguimos inserir documentos de exemplo, pois a estrutura não é válida. Além disso, se você está esperando determinado resultado no ned do processo p - por favor, anexe o exemplo esperado.
-
Problemas de conjunto/fragmentação de réplicas - adicioners.config()
/sh.status()
e remova os dados do host (se sensíveis)
-
Se você tiver uma pergunta específica do driver/framework - por favor, exiba o que foi feito e onde está o problema. Às vezes, é muito difícil traduzir a consulta da sintaxe do shell do mongo para a sintaxe do driver/framework - então, se você puder tentar construir essa consulta no shell do mongoDB - e ter um exemplo em execução - adicione-o à pergunta.
Exemplos:
RE:1
Usando o mongo 2.6 no laptop Windows, não consigo ter uma coleção maior que 2 GB, por quê?
RE:2
Minha consulta
db.collection.find({isValid:true})
leva mais de 30 segundos, consulte a saída de explicação:{
"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
Estou tendo problemas para obter os últimos 3 elementos de matriz de todos os registros no meu pipeline de agregação, mongo 3.2.3
minha consulta:
db.collection.aggregate([{aggregation pipeline}])
esquema do 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
Eu tenho problemas com meu conjunto de réplicas, os dados não são replicados para outro servidor usando o mongo 3.2, abaixo do dump rs.config:
{
"_id" : "rs0",
"version" : 1,
"members" : [
{
"_id" : 1,
"host" : "mongodb0.example.net:27017"
}
]
}
RE:5
Eu tenho consulta de agregação no mongo e estou tendo problemas para obter o resultado digitado de
c#
motorista 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]
}
}
}
])
meu código 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();
}
}