java中mongodb嵌套json查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中mongodb嵌套json查询?相关的知识,希望对你有一定的参考价值。


"_id" : "32434444444343434",
"type" :
"id" : "54634",
"code" : "mhq",
"name" : "灭火器"
,
"code" : "12-345",
"rmtsys" :
"id" : "43435",
"code" : "XF",
"name" : "消防系统"


如上表,我要查询表中rmtsys字段中的code的值为"XF",查出对应列表?
终于知道怎么搞了!
ref.put("rmtsys.code", "XF"); 嵌套的json,需要用.符号来添加条件

参考技术A fastjson-1.1.2.jar 可以用这个jar包实现 java里面 json字符串和对象之间的互转

在 Mongodb 中查询嵌套模式?

【中文标题】在 Mongodb 中查询嵌套模式?【英文标题】:Querying nested Schema in Mongodb? 【发布时间】:2021-01-31 09:28:03 【问题描述】:

我正在学习 MongoDB 几个星期,但我仍然不知道如何在我的项目中查询嵌套文档。我阅读了 MongoDB-docs 并在 Google 上搜索了很多,但我没有找到很好的解释或教程来解决我的问题。也许你能帮帮我!

我有三个相互引用的集合:

const shipmentSchema = new mongoose.Schema(
  item: 
    type: String,
    required: true,
  ,
  cityId: 
    type: mongoose.Schema.Types.ObjectId,
    ref: "City",
  ,
);

const citiesShcema = new mongoose.Schema(
  cityName: 
     type: String,
     required: true,
  ,
  countryId: 
    type: mongoose.Schema.Types.ObjectId,
    ref: "Countries",
    required: true,
  ,
);

const countriesSchema = new mongoose.Schema(
  countryName: 
    type: String,
    required: true,
  ,
);

const Shipment_new = mongoose.model("Shipment_new", shipmentSchema);
const Cities = mongoose.model("City", citiesShcema);
const Country = mongoose.model("Countries", countriesSchema);

所以,伙计们,我想知道是否有办法查询来自某个国家/地区的货物...我的意思是我想获得一个国家/地区的所有货物。所以,我试着用我自己的方法解决它,这就是我所尝试的:

const filterShipment = 
  cityId: 
    countryId: "5f6bbe558b094c14103a7776",
  ,
;

const shimpents = await Shipment_new.find(filterShipment);

但这并没有奏效,所以伙计们,你们可能想在这里帮助我....我只是想获得特定国家的货物?提前致谢

【问题讨论】:

尝试嵌套填充查询:***.com/questions/28179720/… 您能否为该集合添加示例 JSON 输入?我会在 MongoDB 查询中尝试一下。 【参考方案1】:

要在 mongo 中查询多个文档(SQL 中的联接),您需要使用 $lookup。根据我从问题中了解到的情况,以下查询为您提供了countryId 的所有shipments

这里是查询。我还添加了 mongo 游乐场。这样您就可以运行查询。并根据需要进行一些更改。

db.Shipment_new.aggregate([
  
    "$lookup": 
      "from": "City",
      "localField": "cityId",
      "foreignField": "_id",
      "as": "city"
    
  ,
  
    "$unwind": "$city"
  ,
  
    "$match": 
      "city.countryId": 111
    
  ,
  
    "$project": 
      item: 1,
      city: "$city.cityName",
      countryId: "$city.countryId"
    
  
])

这是你要找的吗?

这里是Mongo Playground

【讨论】:

以上是关于java中mongodb嵌套json查询?的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB安装和入门

如何查找与嵌套键 laravel mongodb jenssegers 匹配的记录

04 MongoDB各种查询操作 以及聚合操作总结

如何直接从 Java 中的 mongodb 查询返回原始 JSON?

在 Mongodb 中查询嵌套模式?

在 MongoDb 中查询嵌套数组