MongoDB 嵌套搜索查询参数

Posted

技术标签:

【中文标题】MongoDB 嵌套搜索查询参数【英文标题】:MongoDB nested search query parameters 【发布时间】:2021-12-19 02:40:19 【问题描述】:

是否有机会通过"ID" "lang" 字段触发记录,使用findOneAndUpdatefindByIdAndUpdate 查询MongoDB 记录?这是数据库对象示例:


        "id": "61842e6fb19afbc0922f5505",
        "locales": [
          
            "lang": "ru",
            "title": "Тестовый десерт",
            "description": "тестовый"
          ,
          
            "lang": "lv",
            "title": "Testu deserts",
            "description": "Testu descriptions"
          ,
          
            "lang": "en",
            "title": "Test dessert",
            "description": "Test description"
          
        ]

这就是我尝试触发的方式,但它不起作用:

const filter = 
  _id: id,
  locales: 
    lang: lang
  


const product = await Product.findOneAndUpdate(filter, 
  lang: 
    title,
    description,
    price
  
,  new: true );

【问题讨论】:

【参考方案1】:

您可以像这样使用$set 运算符:

const product = await Product.findOneAndUpdate(
  _id: "61842e6fb19afbc0922f5505",
  "locales.lang": "ru"
,

  "$set": 
    "locales.$": 
      lang: "ru",
      title: "title",
      description: "desription",
      price: 23
    
  
)

工作场所:https://mongoplayground.net/p/oBNS6wtK50g

【讨论】:

非常感谢!这有效

以上是关于MongoDB 嵌套搜索查询参数的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 查询求助,嵌套数组里面查东西

MongoDB:如何使用查找查询填充嵌套对象?

MongoDB:如何查询嵌套数组?

Mongodb:查询嵌套数组的大小

嵌套选择MongoDB查询错误

MongoDB:用于搜索性能的嵌套值与单独的集合 - 数据库模式设计