monoDB标签中有很多关于不同问题的问题,我看到还有一些评论请求类似的数据。
所以提供How To Ask a Good Question但这与MongoDB无关。 是否有任何好的文件可以让我提出好的和有价值的问题?
答案 0 :(得分:1)
有一些规则可以帮助我们获得与MongoDB相关的问题的良好和有价值的答案。
请参阅下面的一些常见类别和步骤,这些类别和步骤将有助于您收集数据,从而帮助您更快地找到合适的答案。
基础知识 - 随着mongoDB的发展,更高版本提供了一些很酷的功能 - 为避免混淆,请提供您当前的mongo版本,并告诉我们这是独立系统,副本集还是分片环境
有关表现的问题:
db.collection.find({query}).explain("executionStats")
- 这将为聚合框架提供有关查询,索引的一些统计信息:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
数据操作 - 由于查询基于文档结构,请提供有效的文档转储(甚至多个)并确保mocked
字段反映查询中的字段,有时在尝试构建查询时,我们无法插入示例文档,因为它们的结构不是有效的。此外,如果您期望在流程p的结果中获得某些结果,请附上预期的示例。
副本集/分片问题 - 请添加rs.config()
/ sh.status()
并删除主机数据(如果敏感)
如果您有特定于驱动程序/框架的问题 - 请显示已完成的操作以及您遇到问题的位置。有时很难将查询从mongo shell语法转换为驱动程序/框架语法 - 所以如果你可以尝试在mongoDB shell中构建该查询 - 并且有运行示例 - 请将其添加到问题中。
RE:1
在Windows笔记本电脑上使用mongo 2.6我无法收集大于2GB的内容,为什么?
RE:2
我的查询db.collection.find({isValid:true})
需要30秒以上,请参阅解释输出:
{
"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
我无法从汇总管道中的每条记录中获取最后3个数组元素,mongo 3.2.3
我的查询:db.collection.aggregate([{aggregation pipeline}])
文档架构:
{
"_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
我的副本集有问题,使用mongo 3.2,rs.config dump下面的数据没有复制到其他服务器:
{
"_id" : "rs0",
"version" : 1,
"members" : [
{
"_id" : 1,
"host" : "mongodb0.example.net:27017"
}
]
}
RE:5
我在mongo中有聚合查询,无法从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]
}
}
}
])
我的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();
}
}