PHPでのMongoDBの使用法

Nov 09, 2016 pm 02:00 PM
mongodb

1. Mongodb の基本概念
1. Mongodb データベースの命名規則:
空の文字列 ("") は使用できません
'' (スペース)、.、$、/、および

D:mongodbbin>mongo
または、Windows エクスプローラーで C:mongobin に移動し、mongo.exe をダブルクリックします。
どの方法を選択してもシェルが表示されます。
MongoDB シェル バージョン: 1.6.5
接続先: test
>
これで、テスト サーバーに接続されました。
2.Linux での MongoDB のインストールと構成
1. 32 ビット linux の場合
$curl http://downloads.mongodb.org/linux/mongodb-linux-i686-1.4.4.tgz > mongo.tgz
$ tar xzf mongo.tgz
64 ビット linux の場合
$curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.4.4.tgz > mongo.tgz
$ tar xzf mongo.tgz そうでない場合curl をインストールします。まず、apt-get をインストールします。curl をインストールします。 デフォルトでは、MongoDB はデータを /data/db/ フォルダーに保存します。このフォルダーは手動で作成する必要があります。 次のように作成します。 $ adduser mongodb $ passwd mongodb $ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db $ chown -R mongodb:mongodb /data もちろん、次のように指定することもできます。 --dbpath コマンド MongoDB はデータを別のディレクトリに保存します。
3. コンソールでデータベースを実行します: $ nohup ./mongodb-xxxxxxx/bin/mongod & $ ./mongodb-xxxxxxx/bin/mongo > db.foo.save( { a : 1 } ) > db.foo .find() の結果は次のようになります: { "_id" : ObjectId("4cd181a31415ffb41a094f43"), "a" : 1 } OK! !
2つ。 Mongodb の手順と関連操作
a) show コマンド
ii. 現在のすべてのデータベースを表示するには、dos に show db を入力します
> show dbs
admin
alphabet
color
colors
local
mymongo
test
>
iii. show collections view All現在のデータベースの下のテーブル
> use mymongo
db mymongo に切り替え
> show collections
colors
shell.colors
system.indexes
>
b) 現在使用する必要があるデータベースを指定します
i。新しいライブラリを作成します。このライブラリにデータがない場合は、一定期間後にシステムが破棄されます
ii. [データベース名] を使用します
i) データを追加します。データ形式は json 形式です
ii。 insertで追加したデータにtableを追加すると、新しいテーブルが作成され、テーブルにデータが追加されます
iii. db.[テーブル名].insert()
> db.dingdan.insert(
... {
... order_id: 109384,
.. Order_date: new Date("12/04/2010"),
... 顧客: {
... 名前: "Joe Bloggs"、
... 会社: " XYZ Inc.」、
... 電話 : "(555) 123-4567"
... }、
... 支払い: {
... タイプ: "現金"、
... 金額: 4075.99、
...paid_in_full: true
.. . .
...説明: 「高価な製品」、
...数量: 2,
...price_per _unit: 2000
.. .}, ...], c ... レジ係 ID: 340582242
...}
...)
D) 手順の保存
Ii データの保存
Iiテーブルにデータがない場合は
iii. このデータがテーブルに存在する場合は、新しいデータを変更します
db.[テーブル名].save()
db.collection.save( x )
x は更新するオブジェクトです。単一レコードのみを指定できます。
コレクション内に x オブジェクトと同じ「_id」を持つレコードが既に存在する場合。 Mongodb はコレクション内の既存のレコードを x オブジェクトに置き換えます。それ以外の場合、x に _id がない場合は、システムが自動的に _id を生成して挿入します。これは、上記の update ステートメントの upsert=true および multi=false の状況と同等です。

db.test0.save({count:40,test1:"OK"}); test0 の場合、_id システムは
db.test0.save({_id:40,count:40,test1:"OK"}) を生成します。 40 に等しい _id がある場合は置き換えられ、そうでない場合は挿入されます。
e) 削除コマンド
i. テーブル内の指定されたデータを削除します
ii. db.[テーブル名].remove()
カラーテーブルにレコードを追加します
> db.colors.save({"color" : "112233"})
> db.colors.find()
{ "_id" : ObjectId("4e9bc2024fadb58af17b2f01"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2374fadb58af17b2f02"), " color " : "ff0000" }
{ "_id" : ObjectId("4e9bc2384fadb58af17b2f03"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2394fadb58af17b2f04"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2394fadb58af17b2f05"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23a4fadb58af17b2f06"), "color" : "ff0000" }
{ "_id" : ObjectId(" 4e9b c23a4fadb58af17b2f07 "), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23b4fadb58af17b2f08"), "color" : "ff0000" }
{ "_id" : 17b2f09")、"カラー" : " ff0000" }
{ "_id" : ObjectId("4e9bc23c4fadb58af17b2f0a"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23c4fadb58af17b2f0b"), "color" : "ff0000" }
{ " _id" : ObjectId("4e9bc23d4fadb58af17b2f0c"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9e3f435240000000005a2d"), "color" : "112233" }
追加したレコードを削除します
> .カラー。 Remove({"color":"112233"})
> db.colors.find()
{ "_id" : ObjectId("4e9bc2024fadb58af17b2f01"), "color" : "ff0000" }
{ "_id" : ObjectId( "4e9bc2374fadb58af17b2f02"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2384fadb58af17b2f03"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc2394fadb58 17b2f04"),"色" : "ff0000" }
{ "_id" : ObjectId("4e9bc2394fadb58af17b2f05"), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23a4fadb58af17b2f06"), "color" : "ff0000" }
{ " _id" : ObjectId("4e9bc23a4fadb58af17b2f07")、"color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23b4fadb58af17b2f08")、 "color" : "ff0000" }
{ "_id" : 9b c23b4fadb58af17b2f09" ), "color" : "ff0000" }
{ "_id" : ObjectId("4e9bc23c4fadb58af17b2f0a"), "color" : "ff0000" }
{ "_id" : "4e9bc23c4fadb58af17b2" f0b")、"色" : "ff0000 " }
{ "_id" : ObjectId("4e9bc23d4fadb58af17b2f0c"), "color" : "ff0000" }
f) 更新コマンド
i. db.[テーブル名].update()
db .collection .update( criteria, objNew, upsert, multi )

criteria:

objNew と同様のクエリ条件の更新 SQL 更新クエリの後の部分: オブジェクトと一部の更新演算子 ($、$inc... など) など.、SQL 更新クエリで設定した後の
upsert としても理解できます。このパラメーターは、更新レコードがない場合に objNew を挿入するかどうかを意味し、true は挿入を意味し、デフォルトは false で挿入しません。
multi: mongodb のデフォルト値は false で、最初に見つかったレコードのみが更新されます。このパラメーターが true の場合、条件に従って見つかった複数のレコードがすべて更新されます。

例:

db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); test0 の最初のレコードのみが更新されます。 .update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); すべて更新されました
db.test0.update( { "count " : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 最初の 1 つだけが追加されました
db.test0.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); すべて追加されました
db.test0.update( { "count" : { $gt : 15 } } , { $inc : { "カウント" : 1} },false,true );すべて更新されました
db.test0.update( { "カウント" : { $gt : 10 } } , { $inc : { "カウント" : 1} },false ,false );最初のもののみを更新しました

g) Find コマンド
i. データをクエリし、スキップおよび制限メソッドとともに使用してページング効果を実現できます。
ii. db.[テーブル名].find({}).skip([num1]).limit([num2])、num1 はどのデータから始まり、不足している場合は num2 がクエリされたデータの数になります。 data の場合、残りのデータが優先されます
iii. db.[テーブル名].find({[_id:{ &lt : num }]}) 括弧はクエリ条件と、「より大きい」や「より小さい」などの関係演算子の例です。翻訳文字を使用して置き換えます。
> zm を使用します
db zm に切り替えました
> db.zm.find().skip(10).limit(5);
{ "_id" : ObjectId("4e9e3d6b5240000000005a1c"), "char" : "k", "コード" : 107 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1d"), "char" : "l", "code" : 108 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1e"), "char" : "M"、 "code":109} {"_id":objectId( "4e9e3d6b5240000000005a1f")、 "char": "n"、 "code":110}
{"_id":objectid( "4e9e3d6b524000000000000000005a20")、 "char" : "o", "code" : 111 }
>
h) findOne コマンド
i. 指定されたクエリ内の最初のコマンドをクエリします
ii. db.[テーブル名].findOne()
> db. .findOne()
{ "_id" : ObjectId("4e9e3d6b5240000000005a12"), "char" : "a", "code" : 97 }
注: findOne の O は大文字にする必要があります。
i) function
i. カスタム関数、定義後に直接呼び出すことができます
ii. function testFunction(op1,op2,op3……){}
iii.「testFunction」: function(op1,op2,op3……) {}
iv. 定義された関数は直接呼び出すことができ、return を使用してデータを返すことができます
> function testFunction(){
... db.zm.remove({"code":{$in:[100,101,102,103] }})
... return db.zm.find({})
... }
> testFunction()
{ "_id" : ObjectId("4e9e3d6b5240000000005a12"), "char" : "a", "code " : 97 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a13"), "char" : "b", "code" : 98 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a14"), "char" : "c ", " code" : 99 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a19"), "char" : "h", "code" : 104 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1a"), "char " : " i", "code" : 105 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1b"), "char" : "j", "code" : 106 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1c") 」 ), " char" : "k", "code" : 107 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1d"), "char" : "l", "code" : 108 }
{ "_id" : ObjectId ("4e9e3d6b5240000000005a1e "), "char" : "m", "code" : 109 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a1f"), "char" : "n", "code" : 110 }
{ " _id" : ObjectId("4e9e3d6b5240000000005a20"), "char" : "o", "code" : 111 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a21"), "char" : "p", "code" : 112 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a22"), "char" : "q", "code" : 113 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a23"), "char" : "r", "コード" : 114 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a24"), "char" : "s", "code" : 115 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a25"), "char" : 」 t", "code" : 116 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a26"), "char" : "u", "code" : 117 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a27"), 」 char" : "v"、"code" : 118 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a28")、 "char" : "w"、 "code" : 119 }
{ "_id" : ObjectId("4e9e3d6b5240000000005a28") 29 "), "char" : "x", "code" : 120 }
has more
j) var
i. 変数の名前付け type
ii. は JS の var と同じです。
1. var [name] の命名も、js 変数の命名規則と一致しています。
k) print コマンド
i. 印刷に使用されます
ii. print([Strings]);
iii. 印刷オブジェクトが mongo データである場合、それは認識されません。
l) printJson コマンド
i. printJson([json]);
m) shutdown
i. > データベース名を使用して
admin
>db.shutdownServer () を実行します。 ;
サーバーがダウンしているはずです…
MongoDB は、次のようなさまざまな条件演算子をサポートしています:
? $lt (より小さい)
? $gt (より大きい)
?または等しい)
? $exists (フィールドが存在するかどうかを確認する)
? $ne (等しくない)
?配列内の 1 つ以上の値
? $type (指定された BSON データ型と一致する値)
? $not (等しくない)
db.tablename.find({fieldname:{$gt:100} })
mongodb 更新演算子:

1 ) $inc

Usage: { $inc : { field : value } }

は、数値フィールドに値を追加することを意味します。例:

> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 16, "test1" : "TESTTEST", "test2" : "OK", "test3" : "TESTTEST" ", "test4" : "OK", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $inc : { "count" : 1 } } );
> db.test0.find( { "_id" : 15 } );
{ " _id" : { "floatAbout" : 15 }, "count" : 17, "test1" : "TESTTEST", "test2" : "OK", "test3" : "TESTTEST", "test4" : "OK", " test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $inc : { "count" : 2 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 19, "test1" : "TESTTEST", "test2" : "OK", "test3" : "TESTTEST", " test4" : "OK", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $inc : { "count" : -1 } } );
> db .test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : "TESTTEST", "test2" : "OK", "test3" : "TESTTEST", "test4" : "OK", "test5" : "OK" }


2) $set

使用法: { $set : { field : value } }

は以下と同等ですSQL の set フィールド = 値、すべてのデータ型が $set をサポートします。例:
> db.test0.update( { "_id" : 15 } , { $set : { "test1" : "testv1","test2" : "testv2","test3" : "testv3","test4" : "testv4" } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : " testv1", "test2" : "testv2", "test3" : "testv3", "test4" : "testv4", "test5" : "OK" }

3) $unset

使用法: { $unset : { field : 1} }

その名の通り、フィールドを削除することです。例:
> db.test0.update( { "_id" : 15 } , { $unset : { "test1":1 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }、 "count" : 18、 "test2" : "testv2"、 "test3" : "testv3"、 "test4" : "testv4"、 "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $unset : { "test2": 0 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test3" : "testv3", "test4" : "testv4", "test5" : "OK" }

> db.test0. update( { "_id" : 15 } , { $unset : { "test3":asdfasf } } );
金曜日 5 月 14 日 16:17:38 JS エラー: ReferenceError: asdfasf が定義されていません (シェル):0

> db.test0.update( { "_id" : 15 } , { $unset : { "test3":"test" } } );
> db.test0.find( { "_id" : 15 } );
{ " _id" : { "floatAbout" : 15 }, "count" : 18, "test4" : "testv4", "test5" : "OK" }

フィールド : 1 の 1 が何であるかわかりませんでした、とにかく何かがある限り。

4) $push
使用法: { $push : { field : value } }

フィールドに値を追加します。フィールドが存在しない場合は、新しい配列型が追加されます。 。例:

> db.test0.update( { "_id" : 15 } , { $set : { "test1" : ["aaa","bbb"] } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "aaa", "bbb" ], "test4" : "testv4", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $push : { "test1": "ccc" } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "aaa", "bbb", "ccc" ], "test4" : "testv4", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $push : { "test2": "ccc" } } );
> db.test0 .find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "aaa", "bbb", "ccc" ], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $push : { "test1 ": ["ddd","eee"] } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18、「test1」:[「aaa」、「bbb」、「ccc」、[「ddd」、「eee」] ]、「test2」:[「ccc」]、「test4」:「testv4」、「test5」 " : "OK" }
5) $pushAll

使用法: { $pushAll : { field : value_array } }

$push と同じですが、複数の値を一度に配列フィールドに追加できる点が異なります。例:

> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "aaa", " bbb", "ccc", [ "ddd", "eee" ] ], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }

> db.test0 .update( { "_id" : 15 } , { $pushAll : { "test1": ["fff","ggg"] } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "aaa", "bbb", "ccc", [ "ddd", "eee" ], "fff" 、"ggg" ]、"test2" : [ "ccc" ]、"test4" : "testv4"、"test5" : "OK" }

6)$addToSet
Usage: { $addToSet : { フィールド : 値 } }

配列に値を追加します。値が配列にない場合にのみ追加します。例:
> db.test0.update( { "_id" : 15 } , { $addToSet : { "test1": {$each : ["444","555"] } } } );
> db.test0 .find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [
"aaa",
"bbb",
"ccc ",
[
"ddd",
"eee"
],
"fff",
"ggg",
[
"111",
"222"
],
"444",
"555"
]、"test2" : [ "ccc" ]、"test4" : "testv4"、"test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $addToSet : { " test1": {$each : ["444","555"] } } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [
"aaa",
"bbb",
"ccc",
[
"ddd",
"eee"
],
"fff",
"ggg ",
[
"111",
"222"
],
"444",
"555"
], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $addToSet : { "test1": ["444","555"] } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [
"aaa",
"bbb",
"ccc",
[
「ddd」、
「eee」
]、
「fff」、
「ggg」、
[
「111」、
「222」
]、
「444」、
「555」、
[
] "444",
"555"
]
], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }
> db.test0.update( { "_id " : 15 } , { $addToSet : { "test1": ["444","555"] } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [
"aaa",
"bbb",
"ccc",
[
"ddd",
"eee"
],
" fff",
"ggg",
[
"111",
"222"
],
"444",
"555",
[
"444",
"555"
]
], "test2 " : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }


7) $pop

配列内の値を削除します

Usage:
最後の値を削除します: { $pop : { field : 1 } }
最初の値を削除します: { $pop : { field : -1 } }

削除できる値は 1 つだけであることに注意してください。つまり、使用できるのは 1 または -1 だけであり、Use は使用できません。 2 つの項目を削除するには 2 または -2。 mongodb 1.1 以降のバージョンのみを使用できます。例:
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, " test1" : [
"bbb",
"ccc",
[
"ddd",
"eee"
],
"fff",
"ggg",
[
"111",
"222"
],
"444"
]、"test2" : [ "ccc" ]、"test4" : "testv4"、"test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $pop : { "test1": -1 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count " : 18, "test1" : [
"ccc",
[
"ddd",
"eee"
],
"fff",
"ggg",
[
"111",
"222"
] ,
"444"
], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }
> db.test0.update( { "_id" : 15 } , { $pop : { "test1" : 1 } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18 、 "test1" : [ "ccc"、 [ "ddd"、 "eee" ]、 "fff"、 "ggg"、 [ "111"、 "222" ] ]、 "test2" : [ "ccc" ]、 " test4" : "testv4",
"test5" : "OK" }

8) $pull

Usage: $pull : { field : value } }

value と等しい値を配列フィールドから削除します。例:
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "ccc", [ " ddd", "eee" ], "fff", "ggg", [ "111", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4",
"test5" : "OK" }

> db.test0.update( { "_id" : 15 } , { $pull : { "test1": "ggg" } } );
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "ccc", [ "ddd", "eee" ], "fff", [ "111 ", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4", "test5"
: "OK" }

9) $pullAll

使用法: { $pullAll : { field : value_array } }

$pullと同様に、配列内の複数の値を一度に削除できます。例:
> db.test0.find( { "_id" : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ "ccc", [ " ddd", "eee" ], "fff", [ "111", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4", "test5"
: "OK" }

> db.test0.update( { "_id" : 15 } , { $pullAll : { "test1": [ "ccc" , "fff" ] } } );
> db.test0.find( { "_id " : 15 } );
{ "_id" : { "floatAbout" : 15 }, "count" : 18, "test1" : [ [ "ddd", "eee" ], [ "111", "222" ] ], "test2" : [ "ccc" ], "test4" : "testv4", "test5" : "OK" }


10) $ 演算子

$ は独自の意味で、次に従って調べることを意味します。条件 配列内の項目はそれ自体です。
> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }

> t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1} }, false, true )

> t.find()
{ "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "投票" : 4 }, { "投稿者" : "ジェーン", "投票" : 7 } ] }

$ は最初に見つかった配列項目のみを適用し、残りは無視されることに注意してください。例を見てみましょう:

> t.find();
{ "_id" : ObjectId("4b9e4a1fc583fa1c76198319"), "x" : [ 1, 2, 3, 2 ] }
> t.update({x : 2 }, {$inc: {"x.$": 1}}, false, true);
> t.find();

$ を $unset と一緒に使用すると、null が残ることにも注意してくださいただし、{$pull:{x:null}} を使用すると、null のすべての配列項目を削除できます。例:
> t.insert({x: [1,2,3,4,3,2,3,4]})
> t.find()
{ "_id" : ObjectId("4bde2ad3755d00000000710e"), "x" : [ 1, 2, 3, 4, 3, 2, 3, 4 ] }
> t.update({x:3}, {$unset:{"x.$":1}})
> t.find()
{ "_id" : ObjectId("4bde2ad3755d00000000710e"), "x" : [ 1, 2, null, 4, 3, 2, 3, 4 ] }

{ "_id" : ObjectId("4b9e4a1fc583fa1c76198319"), "x" : [ 1, 3, 3, 2 ] }
Mongodb でのインデックスの作成:
db.[テーブル名].ensureIndex({num1: 1,num2 :-1}) num1 と num2 は、インデックスを作成するために使用されるフィールドです。
(1) どのような種類のクエリが実行されるか。どのキーにインデックスを付ける必要があるか?
(2). 各キーのインデックスの方向は何ですか?
(3). 拡張にどう対処するか?頻繁に使用されるデータをより多くメモリに保持できるように、別のキーの配置はありますか。
db.[テーブル名].ensureIndex({num1: 1,num2:-1}, {"background":true})//長期インデックスを変更します
db.runCommand({"dropIndexes": "foo", "index":"alphabet"})
すべてのインデックスを削除したい場合は、indexの値を*に代入できます。
Mongodb のマスター/スレーブ レプリケーション
マスター/スレーブ レプリケーションは、データベースのバックアップ、障害回復、読み取り拡張などに使用できます。 (現在、スレーブ ノードから複製するメカニズムはありません)。
1. mongod –master を実行してマスターサーバーを起動します。
2. mongod –slave –source master_address を実行してスレーブサーバーを起動します。 (master_address はマスター ノードのアドレスです)
3. マスター ノードのディレクトリを作成し、ポート (10000) をバインドします:
$mkdir –p ~/dbs/master
$ ./mongod –dbpath ~/dbs/master –port 10000 –master
4. スレーブノードのディレクトリを設定します (別のディレクトリとポートを選択します)
$mkdir –p ~/dbs/slave
$ ./mongod –dbpath ~/dbs/slave –port 10001 –slave –source
localhost: 10000
オプション: -only (スレーブ ノードから特定のデータベースのみをコピーするように指定します)
-slavelay (マスター ノードの操作を適用するときに遅延を増やすためにスレーブ ノードで使用されます)
-fastsync (に基づく)マスター ノードのデータ スナップショット) スレーブ ノードを起動し、マスターとスレーブの同期を実装します)
-autoresync (マスターとスレーブの同期を自動的に復元します)
-oplogSize (マスター ノードの oplog のサイズ (MB))
3 つ。 Mongodb の GridFS
mongodb は大規模なデータ ストレージをサポートしているため、mongodb には大規模なデータ ストレージをサポートできる分散ファイル システム GirdFS も付属しています。mongodb には最大サイズ 4MB の BSON ドキュメント オブジェクトもあり、大量のデータを保存できます。データの。サイズ制限がない場合でも、BSON はビッグデータに対する高速範囲クエリを満たすことができないため、mongodb は GridFS を導入しました。
4. PHP のコードを使用したテスト:
MySQL と同様、mongoDB は PHP 拡張ライブラリ .dll の形式で PHP と統合されています。
次の Web サイトにアクセスして、Windows で対応する PHP バージョンの dll ファイルをダウンロードします:
http://cn.php.net/manual/en/mongo.installation.php#mongo.installation.windows
PHP に従ってバージョンとスレッド セキュリティ (phpinfo で表示可能) かどうかなどを確認して、対応するバージョンを選択してダウンロードし、解凍し、php_mongo.dll ファイルを取得します。これを PHP インストール ディレクトリの ext ディレクトリにコピーします。 php.ini ファイルに extension = php_mongo.dll を追加します。
Web サーバー (Apache または nginx) を再起動します。 phpinfo で mingoDB 情報を確認できるはずです。そうでない場合は、インストールに問題があります。ダウンロードした mingoDB 拡張機能が間違っている可能性があります。
Php は mongodb を操作します
1. mongoDB との接続を確立します:
mongo クラスを直接インスタンス化して接続を作成します:
$mo = new Mongo();//Mongo 接続オブジェクトを取得します
Mongo クラスをインスタンス化し、それをデフォルト localhost:27017 ポートで mongoDB への接続を確立します。
他のホストに接続したい場合は、次のように記述できます:
$mongo = new Mongo("mongodb://username:password@192.168.1.22:12345");
もう 1 つの方法は、mongo クラスをインスタンス化し、次に手動で接続を確立します:
$mongo= newMongo("mongodb://username:password@192.168.1.22:12345", array('connect'=>false));//初期化クラス
$mongo->connect( );/ / 接続を作成します
Mongo クラスのいくつかの便利なメソッド:
Mongo::listDBs()
現在の mongo サービスのライブラリ (DB) 情報を含む配列を返します。
$mo = new Mongo();
$dbs = $mo->listDBs();//データベース情報を含む配列を取得します
Mongo::selectCollection($db,$coll)
現在の接続コレクションの下の配列を返しますデータベース内のオブジェクト。
$mo = new Mongo();
$coll = $mo->selectCollection('db','mycoll');//コレクション オブジェクトを取得します
必要なデータベース (Mongo クラス) を選択します:
一方向:
$ mongo = new Mongo();
$db = $mongo->foo;//MongoDB オブジェクトを取得します
別の方法:
$mongo = new Mongo();
$db = $mongo->selectDB( 'foo') ;//MongoDB オブジェクトを取得します
MongoDB の便利な関数:
MongoDB オブジェクトを作成します
$mo = new Mongo();
$db = new MongoDB($mo,'dbname');//Pass MongoDB オブジェクトを作成します
現在の DB を削除します
$db = $mo->dbname;
$db->drop();
現在のデータベース名を取得します
$db = $mo->dbname;
$db->_tostring ();
Select目的のコレクション:
A:
$mo = new Mongo();
$coll = $mo->dbname->collname;//コレクション オブジェクトを取得します
B:
$db = $mo ->selectDB('dbname ');
$coll = $db->collname;
C:
$db = $mo->dbname;
$coll = $db->selectCollectoin('collname');// コレクション オブジェクトを取得します
データの挿入 (MongoCollection オブジェクト):
MongoCollection::insert(array $a,array $options)
array $a 挿入される配列
array $options options
safe 演算結果情報を返すかどうか
fsync に直接挿入するかどうか物理ハードディスク

$coll = $mo->db->foo;
$a = array('a'=>'b');
$options = array('safe'=>true);
$ rs =$coll- >insert($a,$options);
$rs は操作情報を含む配列型の配列です
データベース内のレコードを削除します (MongoCollection オブジェクト):
MongoCollection::remove(array $criteria,array $ options)
array $criteria Condition
array $options Options
safe 演算結果を返すかどうか
fsync 物理ハードディスクに直接影響するかどうか
justOne 1つのレコードにのみ影響するかどうか

$coll = $mo->db-> coll;
$c = array( 'a'=>1,'s'=>array('$lt'=>100));
$options = array('safe'=>true);
$rs = $coll->remove($c ,$options);
$rs は操作情報を含む配列型の配列です
データベース内のレコードを更新します (MongoCollection オブジェクト):
MongoCollection::update(array $criceria,array $newobj, array $options)
array $ criteria 条件
array $newobj 更新する内容
array $options オプション
safe 演算結果を返すかどうか
fsync 物理ハードディスクに直接影響するかどうか
upsert 物理ハードディスクがある場合に新規追加するかどうか一致するデータはありません
multiple 条件を満たすすべてのレコードに影響するかどうか、デフォルトでは 1 つの項目のみが影響を受けます

$coll = $mo->db->coll;
$c = array('a'=>1, 's'=>array('$lt'=>100));
$newobj = array('e'=>'f','x'=>'y');
$options = array('safe '=>true,'multiple'=>true);
$rs = $ coll->remove($c,$newobj,$options);
$rs は操作情報を含む配列型の配列です
コレクションをクエリして単一レコードの取得 (MongoCollection クラス):
array MongoCollection::findOne(array $query, array $fields)
array $query 条件
array $fields 取得するフィールド

$coll = $mo->db-> coll;
$query = array('s'=>array('$lt'=> 100));
$fields = array('a'=>true,'b'=>true);
$rs = $coll->findOne($query,$fields);
結果があれば配列を返し、結果がなければNULLを返します
複数のレコードを取得するクエリコレクション(MongoCollectionクラス):
MongoCursor MongoCollection::find (array $query, array $fields)
array $query 条件
array $fields 取得するフィールド

$ coll = $mo->db->coll;
$query = array('=>array(' $lt'=>100));
$fields = array('a'=>true,'b' =>true);
$cursor = $coll->find($query,$fields);
を返しますカーソル レコード オブジェクト MongoCursor。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mongodb ではどのバージョンが一般的に使用されますか? mongodb ではどのバージョンが一般的に使用されますか? Apr 07, 2024 pm 05:48 PM

mongodb ではどのバージョンが一般的に使用されますか?

Nodejsとvuejsの違い Nodejsとvuejsの違い Apr 21, 2024 am 04:17 AM

Nodejsとvuejsの違い

MongoDBを使用したリアルタイムレコメンドシステムの実装経験の共有 MongoDBを使用したリアルタイムレコメンドシステムの実装経験の共有 Nov 03, 2023 pm 04:37 PM

MongoDBを使用したリアルタイムレコメンドシステムの実装経験の共有

mongodbデータベースの利点は何ですか mongodbデータベースの利点は何ですか Apr 07, 2024 pm 05:21 PM

mongodbデータベースの利点は何ですか

mongodb によって作成されたデータベースはどこにありますか? mongodb によって作成されたデータベースはどこにありますか? Apr 07, 2024 pm 05:39 PM

mongodb によって作成されたデータベースはどこにありますか?

mongodb とはどういう意味ですか? mongodb とはどういう意味ですか? Apr 07, 2024 pm 05:57 PM

mongodb とはどういう意味ですか?

mongodb データベース ファイルはどこにありますか? mongodb データベース ファイルはどこにありますか? Apr 07, 2024 pm 05:42 PM

mongodb データベース ファイルはどこにありますか?

mongodbを開く方法 mongodbを開く方法 Apr 07, 2024 pm 06:15 PM

mongodbを開く方法

See all articles