ここで、MongoDB関連の質問に対する適切で価値のある回答を得るのに役立つルールがいくつかあります。
以下の一般的なカテゴリと手順を参照してください。データの収集に役立ち、適切な回答をすばやく見つけるのに役立ちます。
スクリーンショットをエディタに貼り付けることはできないため、すべてのドキュメントをテキスト形式で添付してください:-)
-
基本-mongoDBが進化するにつれて、いくつかのクールな機能がより高いバージョンで利用可能になります-混乱を避けるために、現在のmongoバージョンを提供し、これがスタンドアロンシステム、レプリカセット、またはシャード環境であるかどうかをお知らせください
-
パフォーマンスに関する質問:
- 実行統計の出力を提供してください-クエリの場合:
db.collection.find({query}).explain("executionStats")
-これにより、集計フレームワークのクエリ、インデックスに関する統計が得られます:db.collection.aggregate([{pieplineDatausedToExecuteAggregation},{explain:true}])
- SSD、RAMサイズ、CPU番号、既知の場合はクロック速度などのハードウェア仕様
- 実行統計の出力を提供してください-クエリの場合:
-
データ操作-クエリはドキュメント構造に基づいているため、有効なドキュメントダンプ(または複数)を提供し、
mocked
を確認してください フィールドはクエリのフィールドを反映しています。クエリを作成しようとすると、構造が無効であるため、サンプルドキュメントを挿入できない場合があります。また、プロセスpの終了時に特定の結果を期待している場合は、期待される例を添付してください。 -
レプリカセット/シャーディングの問題-
rs.config()
を追加してください /sh.status()
ホストデータを削除します(機密性の高い場合) -
ドライバー/フレームワーク固有の質問がある場合は、何が行われ、どこに問題があるかを表示してください。クエリをmongoシェル構文からドライバー/フレームワーク構文に変換するのが非常に難しい場合があります。そのため、mongoDBシェルでそのクエリを構築し、実行例がある場合は、質問に追加してください。
例:
RE:1
Windowsラップトップでmongo2.6を使用すると、2 GBを超えるコレクションを取得できないのはなぜですか?
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
集計パイプラインmongo3.2.3のすべてのレコードから最後の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
レプリカセットに問題があります。rs.configダンプの下にあるmongo3.2を使用して、データが他のサーバーに複製されません。
{
"_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();
}
}