亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享

mongodb數組更新

2023-09-22 05:38:46
7
0

1.更新數組中單個元素

首先通過(guo)下述(shu)語(yu)句(ju)創建(jian)一張student(學(xue)生成績表),并插入3條(tiao)語(yu)句(ju),grades為(wei)分(fen)數數組。

db.students.insert([
   { "_id" : 1, "grades" : [ 85, 80, 80 ] },
   { "_id" : 2, "grades" : [ 88, 90, 92 ] },
   { "_id" : 3, "grades" : [ 85, 100, 90 ] }
])

如果(guo)我們想(xiang)更新grades數(shu)組中,分(fen)數(shu)等于80的第一個數(shu)組元素,我們可以使用(yong)下述命令,

db.students.updateOne(
   { _id: 1, grades: 80 },
   { $set: { "grades.$" : 82 } }
)

執行完(wan)之后,學生成績表(biao)的數據(ju)如下:

{ "_id" : 1, "grades" : [ 85, 82, 80 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }

 

若是數組元素為對象(xiang)的情況,采用(yong)下述語法進(jin)行更新,

db.collection.update(
   { <query selector> },
   { <update operator>: { "array.$.field" : value } }
)

示例:

{
  _id: 4,
  grades: [
     { grade: 80, mean: 75, std: 8 },
     { grade: 85, mean: 90, std: 5 },
     { grade: 85, mean: 85, std: 8 }
  ]
}

假如我(wo)們想(xiang)更(geng)新數組對象中,grade=85對象的(de)std元素的(de)值,可以使用下述語句(ju)

db.students.updateOne(
   { _id: 4, "grades.grade": 85 },
   { $set: { "grades.$.std" : 6 } }
)

語句執行完成之后,結果如下(xia)

{
   "_id" : 4,
   "grades" : [
      { "grade" : 80, "mean" : 75, "std" : 8 },
      { "grade" : 85, "mean" : 90, "std" : 6 },
      { "grade" : 85, "mean" : 85, "std" : 8 }
   ]
}

 

2.更新數組中所有元素

采(cai)用(yong)下屬命令格式更新

db.collection.update(
   { <query selector> },
   { <update operator>: { "array.$[].field" : value } }
)

示例

db.students2.update(
   {_id: 5 },
   { $set: { "grades.$[].grade" : 90, "grades.$[].stu" : 9} },
   { multi: true }
)

 

3.根據數組元素條件查詢

根(gen)據數(shu)組元(yuan)素(su)條件查詢,可以使用$elemMatch,

示例:

db.students2.find({'name':'lisi', 'grades':{$elemMatch:{'grade': 90}}}).pretty();

上述(shu)命(ming)令可(ke)以將(jiang)姓(xing)名(ming)是lisi且(qie)grades數組元素對象中,屬性grade=90的文(wen)檔查詢出來,某(mou)些情(qing)況下,數組元素對象很多(duo),若只想顯示符(fu)合(he)條件的指(zhi)定數組,可(ke)以使用下述(shu)命(ming)令

db.students2.find({'name':'lisi', 'grades.grade':90}, {'grades':{$elemMatch:{'grade':90}}}).pretty();
0條評論
0 / 1000
天涼好個秋
8文(wen)章數(shu)
0粉(fen)絲數
天涼好個秋
8 文章 | 0 粉絲
天涼好個秋
8文章數(shu)
0粉絲數(shu)
天涼好個秋
8 文章(zhang) | 0 粉絲

mongodb數組更新

2023-09-22 05:38:46
7
0

1.更新數組中單個元素

首(shou)先通過下述語句創建一張student(學生成(cheng)績表),并插(cha)入3條語句,grades為分數數組。

db.students.insert([
   { "_id" : 1, "grades" : [ 85, 80, 80 ] },
   { "_id" : 2, "grades" : [ 88, 90, 92 ] },
   { "_id" : 3, "grades" : [ 85, 100, 90 ] }
])

如果我(wo)們想更新grades數組(zu)中,分數等于(yu)80的第一個數組(zu)元素,我(wo)們可(ke)以使用下述命令,

db.students.updateOne(
   { _id: 1, grades: 80 },
   { $set: { "grades.$" : 82 } }
)

執(zhi)行完(wan)之后,學生成績表的(de)數(shu)據(ju)如下(xia):

{ "_id" : 1, "grades" : [ 85, 82, 80 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }

 

若是(shi)數(shu)組(zu)元(yuan)素為對象的情況,采用下述語法進行更(geng)新,

db.collection.update(
   { <query selector> },
   { <update operator>: { "array.$.field" : value } }
)

示例:

{
  _id: 4,
  grades: [
     { grade: 80, mean: 75, std: 8 },
     { grade: 85, mean: 90, std: 5 },
     { grade: 85, mean: 85, std: 8 }
  ]
}

假如我們想更新數組對象中,grade=85對象的std元素的值,可以使用下述語句(ju)

db.students.updateOne(
   { _id: 4, "grades.grade": 85 },
   { $set: { "grades.$.std" : 6 } }
)

語(yu)句執行完(wan)成之后,結果如下

{
   "_id" : 4,
   "grades" : [
      { "grade" : 80, "mean" : 75, "std" : 8 },
      { "grade" : 85, "mean" : 90, "std" : 6 },
      { "grade" : 85, "mean" : 85, "std" : 8 }
   ]
}

 

2.更新數組中所有元素

采用下(xia)屬命令格式更新

db.collection.update(
   { <query selector> },
   { <update operator>: { "array.$[].field" : value } }
)

示例

db.students2.update(
   {_id: 5 },
   { $set: { "grades.$[].grade" : 90, "grades.$[].stu" : 9} },
   { multi: true }
)

 

3.根據數組元素條件查詢

根據(ju)數組(zu)元素條件查詢,可以(yi)使用$elemMatch,

示例:

db.students2.find({'name':'lisi', 'grades':{$elemMatch:{'grade': 90}}}).pretty();

上述(shu)命令(ling)可以(yi)將姓名是lisi且grades數組元素對象中,屬(shu)性grade=90的(de)文檔查詢出來(lai),某(mou)些情況下,數組元素對象很多,若(ruo)只(zhi)想顯示符合條件的(de)指定數組,可以(yi)使用下述(shu)命令(ling)

db.students2.find({'name':'lisi', 'grades.grade':90}, {'grades':{$elemMatch:{'grade':90}}}).pretty();
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0