Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

ピリオドを含むフィールド名

項目一覧

  • ピリオドを含むフィールド名を挿入
  • ピリオドのあるフィールドのクエリ
  • 期間内のフィールドを更新
  • 詳細

このセクションでは、フィールド名にピリオドが含まれるドキュメントを挿入、クエリ、更新する方法をまとめます。

ピリオドのあるフィールド名を含むドキュメントを挿入するには、フィールド名を引用符で囲みます。

次のコマンドは、フィールド名 price.usdを含むドキュメントを挿入します。

db.inventory.insertOne(
{
"item" : "sweatshirt",
"price.usd": 45.99,
"quantity": 20
}
)

期間内のフィールドをクエリするには、 $getField演算子を使用します。

次のクエリは、 price.usdフィールドが40より大きいドキュメントを返します。

db.inventory.find(
{
$expr:
{
$gt: [ { $getField: "price.usd" }, 40 ]
}
}
)
[
{
_id: ObjectId("66145f9bcb1d4abffd2f1b50"),
item: 'sweatshirt',
'price.usd': 45.99,
quantity: 20
}
]

$getFieldを使用しない場合、MongoDB はピリオドを含むフィールド名を埋め込みオブジェクトとして扱います。 たとえば、次のクエリは、 priceフィールド内のusdフィールドが40より大きいドキュメントに一致します。

db.inventory.find( {
"price.usd": { $gt: 40 }
} )

上記のクエリは、次のドキュメントと一致します。

{
"item" : "sweatshirt",
"price": {
"usd": 45.99
},
"quantity": 20
}

期間を持つフィールドを更新するには、 $setField演算子を使用した集計パイプラインを使用します。

次の操作は、 price.usdフィールドを29.99に設定します。

db.inventory.updateOne(
{ "item": "sweatshirt" },
[
{
$replaceWith: {
$setField: {
field: "price.usd",
input: "$$ROOT",
value: 29.99
}
}
}
]
)

$setFieldを使用しない場合、MongoDB はピリオドを含むフィールド名を埋め込みオブジェクトとして扱います。 たとえば、次の操作では、既存のprice.usdフィールドは更新されず、代わりにpriceフィールド内に埋め込まれた新しいフィールドusdが挿入されます。

db.inventory.updateOne(
{ "item": "sweatshirt" },
{ $set: { "price.usd": 29.99 } }
)

結果ドキュメント:

[
{
_id: ObjectId("66145f9bcb1d4abffd2f1b50"),
item: 'sweatshirt',
'price.usd': 45.99
quantity: 20,
price: { usd: 29.99 }
}
]

集計パイプラインによる更新のその他の例については、「 集約パイプラインによる更新 」を参照してください

戻る

ドル記号