Skip to content

Instantly share code, notes, and snippets.

@nishina555
Last active March 30, 2018 02:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nishina555/084282749bce6ae1102c04c3a5e8c1b7 to your computer and use it in GitHub Desktop.
Save nishina555/084282749bce6ae1102c04c3a5e8c1b7 to your computer and use it in GitHub Desktop.
こんな時どうする? MongoDBクエリ逆引きリファレンス ref: https://qiita.com/nishina555/items/9e20211e8d6f12fdb7b7
{
"no": 1,
"firstName": "Taro",
"lastName": "Tanaka",
"age": 15,
"body": { "height": 165, "weight": 60 },
"grades": [
{ "semester": "first", "grade": 90 },
{ "semester": "second", "grade": 80 }
],
"insertDate": ISODate("2016-10-20T15:00:00Z")
}
{
"no": 2,
"firstName": "Satoshi",
"lastName": "Takeda",
"age": 16,
"body": { "height": 150, "weight": 55 },
"grades": [
{ "semester": "first", "grade": 90 },
{ "semester": "second", "grade": 70 }
],
"insertDate": ISODate("2016-10-21T15:00:00Z")
}
{
"no": 3,
"firstName": "Jiro",
"lastName": "Suzuki",
"age": 15,
"body": { "height": 170,"weight": 65 },
"grades": [
{ "semester": "first", "grade": 60 },
{ "semester": "second", "grade": 80 }
],
"insertDate": ISODate("2016-10-22T15:00:00Z")
}
db.コレクション名.find( { 条件 } )
db.コレクション名.find( { 条件 } ).count()
> db.students.count()
3
> db.students.find( { "age":15 } ).count()
2
db.コレクション名.find( { 条件 },{ 表示したいフィールド: 1, ...} )
> db.students.find( { }, { "_id": 0, "lastName": 1 } )
{ "lastName" : "Tanaka" }
{ "lastName" : "Takeda" }
{ "lastName" : "Suzuki" }
db.コレクション名.find(オブジェクト.ネストされたオブジェクト)
> db.students.find( { "body.height": 150 } )
{ "_id" : ObjectId("580b29bc24c83b73539eab46"), "no" : 2, "firstName" : "Satoshi", "lastName" : "Takeda", "age" : 16, "body" : { "height" : 150, "weight" : 55 }, "grades" : [ { "semester" : "first", "grade" : 90 }, { "semester" : "second", "grade" : 70 } ], "insertDate" : ISODate("2016-10-21T15:00:00Z") }
db.コレクション名.update( { 条件 }, { 演算子: { 配列名.$.フィールド } }, { multi: true } )
> db.students.update( { "lastName": "Tanaka", "grades.semester": "first" }, { $set: { "grades.$.grade": 95 } }, { multi: true } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.students.update( { "lastName": "Tanaka" }, { $set: { "grades.$.grade": 95 } }, { multi: true } )
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 16837,
"errmsg" : "The positional operator did not find the match needed from the query. Unexpanded update: grades.$.grade"
}
})
> db.students.find( { "lastName": "Suzuki" } )
{ "_id" : ObjectId("580b29bc24c83b73539eab47"), "no" : 3, "firstName" : "Jiro", "lastName" : "Suzuki", "age" : 15, "body" : { "height" : 170, "weight" : 65 }, "grades" : [ { "semester" : "first", "grade" : 60 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-22T15:00:00Z") }
db.students.find( { 条件1, 条件2, ... } )
> db.students.find( { "firstName": "Jiro", "lastName": "Suzuki" } )
{ "_id" : ObjectId("580b29bc24c83b73539eab47"), "no" : 3, "firstName" : "Jiro", "lastName" : "Suzuki", "age" : 15, "body" : { "height" : 170, "weight" : 65 }, "grades" : [ { "semester" : "first", "grade" : 60 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-22T15:00:00Z") }
db.コレクション名.find( { $or [ {条件1}, {条件2}, .... ] } )
db.コレクション名.find( { フィールド名: { $in: [ 値1, 値2, ...] } } )
> db.students.find( { $or: [ {"lastName": "Tanaka"}, {"lastName": "Suzuki"} ] } )
{ "_id" : ObjectId("580b29bc24c83b73539eab45"), "no" : 1, "firstName" : "Taro", "lastName" : "Tanaka", "age" : 15, "body" : { "height" : 165, "weight" : 60 }, "grades" : [ { "semester" : "first", "grade" : 90 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-20T15:00:00Z") }
{ "_id" : ObjectId("580b29bc24c83b73539eab47"), "no" : 3, "firstName" : "Jiro", "lastName" : "Suzuki", "age" : 15, "body" : { "height" : 170, "weight" : 65 }, "grades" : [ { "semester" : "first", "grade" : 60 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-22T15:00:00Z") }
db.students.find( { "lastName": { $in: [ "Tanaka", "Suzuki" ] } } )
db.students.find( { フィールド: /文字列/ } )
> db.students.find( { "firstName": /ro/ } )
{ "_id" : ObjectId("580b29bc24c83b73539eab45"), "no" : 1, "firstName" : "Taro", "lastName" : "Tanaka", "age" : 15, "body" : { "height" : 165, "weight" : 60 }, "grades" : [ { "semester" : "first", "grade" : 90 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-20T15:00:00Z") }
{ "_id" : ObjectId("580b29bc24c83b73539eab47"), "no" : 3, "firstName" : "Jiro", "lastName" : "Suzuki", "age" : 15, "body" : { "height" : 170, "weight" : 65 }, "grades" : [ { "semester" : "first", "grade" : 60 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-22T15:00:00Z") }
> db.students.find( { "lastName": /^Ta/ } )
{ "_id" : ObjectId("580b29bc24c83b73539eab45"), "no" : 1, "firstName" : "Taro", "lastName" : "Tanaka", "age" : 15, "body" : { "height" : 165, "weight" : 60 }, "grades" : [ { "semester" : "first", "grade" : 90 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-20T15:00:00Z") }
{ "_id" : ObjectId("580b29bc24c83b73539eab46"), "no" : 2, "firstName" : "Satoshi", "lastName" : "Takeda", "age" : 16, "body" : { "height" : 150, "weight" : 55 }, "grades" : [ { "semester" : "first", "grade" : 90 }, { "semester" : "second", "grade" : 70 } ], "insertDate" : ISODate("2016-10-21T15:00:00Z") }
db.コレクション名.find( { フィールド: { 比較演算子: 値 } } )
db.コレクション名.update( { 条件 }, { 演算子: { 更新内容 } }, { multi: true } )
> db.students.find( { "body.height": { $gte: 160 } } )
{ "_id" : ObjectId("580b29bc24c83b73539eab45"), "no" : 1, "firstName" : "Taro", "lastName" : "Tanaka", "age" : 15, "body" : { "height" : 165, "weight" : 60 }, "grades" : [ { "semester" : "first", "grade" : 90 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-20T15:00:00Z") }
{ "_id" : ObjectId("580b29bc24c83b73539eab47"), "no" : 3, "firstName" : "Jiro", "lastName" : "Suzuki", "age" : 15, "body" : { "height" : 170, "weight" : 65 }, "grades" : [ { "semester" : "first", "grade" : 60 }, { "semester" : "second", "grade" : 80 } ], "insertDate" : ISODate("2016-10-22T15:00:00Z") }
db.コレクション名.find( { フィールド: ISODate("時間") } )
> db.students.find( { "insertDate": { $gte: ISODate("2016-10-22T00:00:00+09:00") , $lt: ISODate("2016-10-23T00:00:00+09:00") } } )
{ "_id" : ObjectId("580b29bc24c83b73539eab46"), "no" : 2, "firstName" : "Satoshi", "lastName" : "Takeda", "age" : 16, "body" : { "height" : 150, "weight" : 55 }, "grades" : [ { "semester" : "first", "grade" : 90 }, { "semester" : "second", "grade" : 70 } ], "insertDate" : ISODate("2016-10-21T15:00:00Z") }
db.コレクション名.update( { 条件 }, { 演算子 : { 更新内容 } }, false, true)
> db.students.update( { "lastName": "Tanaka" }, { $set: { "age": 17 } } )
WriteResult( { "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 } )
db.コレクション名.remove( { 条件 } )
> db.students.remove( { "lastName": "Tanaka" } )
WriteResult( { "nRemoved" : 1 } )
> db.students.remove( { } )
WriteResult( { "nRemoved" : 3 } )
db.コレクション名.count( { 条件 } )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment