如何有效地解决mongoDB相关问题?

时间:2016-06-20 22:37:15

标签: mongodb

monoDB标签中有很多关于不同问题的问题,我看到还有一些评论请求类似的数据。

所以提供How To Ask a Good Question但这与MongoDB无关。 是否有任何好的文件可以让我提出好的和有价值的问题?

1 个答案:

答案 0 :(得分:1)

有一些规则可以帮助我们获得与MongoDB相关的问题的良好和有价值的答案。

请参阅下面的一些常见类别和步骤,这些类别和步骤将有助于您收集数据,从而帮助您更快地找到合适的答案。

请以文本格式附上所有文件,因为截图无法粘贴到编辑器中: - )

  1. 基础知识 - 随着mongoDB的发展,更高版本提供了一些很酷的功能 - 为避免混淆,请提供您当前的mongo版本,并告诉我们这是独立系统,副本集还是分片环境

  2. 有关表现的问题:

    • 请提供执行统计信息输出 - 用于查询:db.collection.find({query}).explain("executionStats") - 这将为聚合框架提供有关查询,索引的一些统计信息:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
    • 硬件规格,如ssd,ram size,cpus no,甚至是时钟速度(如果已知)
  3. 数据操作 - 由于查询基于文档结构,请提供有效的文档转储(甚至多个)并确保mocked字段反映查询中的字段,有时在尝试构建查询时,我们无法插入示例文档,因为它们的结构不是有效的。此外,如果您期望在流程p的结果中获得某些结果,请附上预期的示例。

  4. 副本集/分片问题 - 请添加rs.config() / sh.status()并删除主机数据(如果敏感)

  5. 如果您有特定于驱动程序/框架的问题 - 请显示已完成的操作以及您遇到问题的位置。有时很难将查询从mongo shell语法转换为驱动程序/框架语法 - 所以如果你可以尝试在mongoDB shell中构建该查询 - 并且有运行示例 - 请将其添加到问题中。

  6. 示例:

    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();
    
    
        }
    }
    

    快乐的问!