我有大约5万个包含许多字段的文档,但此问题的重要文档如下:

"_id": ObjectId(""),
...
"item": "apple"
"properties" : [
 {
    "color": "red",
    "size" : "L",
    "status": "eatable"
 }
],
...

我试图打印看起来像item+";"+properties.color的行,同时保留我所拥有数据的完整性,并仅为某些文档打印这些字段.目前,我唯一成功的事情就是仅打印物品或整个数组"属性",但我无法同时获取这两个属性,也无法同时获取 colored颜色 .

db.getCollection("foods").find({properties:{$elemMatch:{color: {$in:["red", "green", "orange", "blue"]}}}})
.aggregate([
   { $unwind: {path:"$properties", preserveNullAndEmptyArrays: true}},
   ]).forEach(function(row){
       if(row.properties !== undefined) print (row.item + ";" + row.properties.color) })

由于在聚合之前进行查找,这会出现错误,但我真的不知道还能如何创建它,以便它只为符合该条件的行打印这个(而且我也不知道$unclown是否会扰乱我的数据中的数组,或者它是否只是函数运行时的临时"分离").

我现在正在运行的只是这些项目:

db.getCollection("foods").find({properties:{$elemMatch:{color: {$in:["red", "green", "orange", "blue"]}}}})
.forEach(
   function(row){
       print (row.item) 
   }
)

通过将row. entry更改为row.properties,我打印了完整的数组,但之后添加.Color没有任何作用.

推荐答案

不确定我是否被理解了,但如何在查询中准备数据,就像这样:

db.getCollection("foods").aggregate([
  {
    $match: {
      "properties.color": {
        $in: [
          "red",
          "green",
          "orange",
          "blue"
        ]
      }
    }
  },
  {
    $project: {
      _id: 0
      item: 1,
      color: {
        "$arrayElemAt": [
          "$properties.color",
          0
        ]
      }
    }
  }
])

here.

在下面获取类似于这样的Python内容,您可以轻松访问coloritem属性.:

[
  {
    "color": "red",
    "item": "apple"
  }
]

Mongodb相关问答推荐

我可以在BSON中使用代理字段吗?

如何使用ID数组对一个集合中的金额求和并更新另一个集合中的字段?

筛选出嵌套数组中的记录Mongo DB聚合

为什么我的Mongoose更新找不到匹配?

Mongo 聚合查找 $gte 6 个月前的日期,以DD-MM-YYYY格式存储为字符串

对对象数组进行分组并在 mongodb 中获取计数

MongoDB聚合 - 用另一个数组过滤数组

mongodb:多键索引 struct ?

在 MongoDB 中打开连接的 SocketTimeout

如何将 json 字符串编组到 bson 文档以写入 MongoDB?

将 MongoDB 地理空间索引与 3d 数据结合使用

Meteor 如何接收对 MongoDB 查询结果的更新?

mongodb 中的 --bindip 配置选项有什么作用?

mongodb,pymongo,aggregate聚合给出奇怪的输出

如何在我的Meteor 应用程序数据库中使用 mongoimport?

MongoDB GridFS VS 直接磁盘 IO

MongoDB - 聚合 - 获取数组中的唯一项

MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

初创公司应该考虑哪些数据库系统?

验证 MongoCredential 的异常和未分类的 Mongo Db 异常