You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB与PyMongo嵌套列表筛选motif_short为I的sequences对象

解决MongoDB嵌套数组中提取指定条件文档的问题

别担心,刚接触MongoDB的时候,处理这种嵌套在数组里的文档筛选确实容易懵。针对你的需求,我们可以用MongoDB的**聚合管道(Aggregation Pipeline)**来精准提取sequences列表中motif_short等于"I"的对象,下面是具体步骤和代码实现:

核心思路拆解

我们需要通过三个聚合阶段完成筛选和格式转换:

  1. $unwind:将根文档中的sequences数组拆分为单个文档,让每个sequence对象成为独立的记录,方便后续单独筛选。
  2. $match:精准匹配motif_short等于"I"的sequence记录。
  3. $replaceRoot:将筛选后的sequence对象提升为根文档,输出你想要的格式。

PyMongo代码实现

from pymongo import MongoClient

# 连接MongoDB(根据你的实际连接信息调整)
client = MongoClient('mongodb://localhost:27017/')
db = client['your_database_name']  # 替换成你的数据库名
collection = db['your_collection_name']  # 替换成你的集合名

# 定义聚合管道
pipeline = [
    # 拆分sequences数组,每个元素成为独立文档
    {"$unwind": "$sequences"},
    # 筛选motif_short为"I"的sequence
    {"$match": {"sequences.motif_short": "I"}},
    # 将符合条件的sequence设置为根文档
    {"$replaceRoot": {"newRoot": "$sequences"}}
]

# 执行聚合查询并转换为列表
matched_sequences = list(collection.aggregate(pipeline))

# 打印结果(格式和你预期的一致)
for item in matched_sequences:
    print(item)

效果说明

  • 不管根级列表有多少个对象,只要某个对象的sequences里有符合motif_short: "I"的项,都会被提取出来。
  • 输出的每个结果都是你需要的完整sequence对象结构,和你给出的预期示例完全匹配。

内容的提问来源于stack exchange,提问作者Shane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:22:30