mongodb 使えそうなコマンド一覧メモ mongodb

■■mongodbで、substrのように左から何文字かを取得するパターン。aggregate の $project で行うよ
db.logtable.aggregate(
[
{
$project:
{
log_type: 1
log_name: 1
log_type2: { $substr: [ $log_type 0 4 ] }
log_name2: { $substr: [ $log_name 0 4 ] }
}
}
]
)

■■ongodbで、指定した行にのみsubstrのように左から何文字かを取得するパターン。aggregate の $project で行うよ
select substr(log_type 0 4) from tblA where log_type = rtype1
のようなもの

db.logtable.aggregate([
{ $match: { log_type : rtype1 } }
{
$project:
{
log_type: 1
log_type2: { $substr: [ $log_type 0 4 ] }
}
}
])


■■db.logtable.aggregate()
これだけでも全件でてくる find()と同じだね


■■ドキュメントを3件だけ取得する場合
limitを使う
find()でつかうときはこれ
> db.logtable.find().limit(3)

aggretateてつかうときはこれ
> db.logtable.aggregate(
{ $limit : 5 }
);
> db.logtable.aggregate({ $limit:3 } )


■■条件を指定して、なおかつ substrつかって、limit3の場合
db.logtable.aggregate([
{ $match: { log_type : rtype1 } }
{
$project:
{
log_type: 1
log_type2: { $substr: [ $log_type 0 4 ] }
}
}
{ $limit:3 }
])


■■日付ごとに件数をかぞえる
db.logtable.aggregate(
{$group:
{_id :
{$substr : [ $generation_date 0 10]}
count:{ $sum : 1}
}
}
);

■■日付ごとに件数をかぞえる(ただしrtype1の行のみ)
db.logtable.aggregate(
{ $match: { log_type : rtype1 } }
{$group:
{_id :
{$substr : [ $generation_date 0 10]}
count:{ $sum : 1}
}
}
);

◆insert
db.messagelog.insert({ regtype : rtype1 regname : rname1 hostname : hostn1 objecttype : MONPNG severity : warning generation_date : 2018-03-24T11:56:52+09:00 message : メッセージ1 })