1

我的 mongo db 示例是:

蒙哥

    > db.pages.findOne()

{
"_id" : ObjectId("519b6e81661b820d0e5d4f83"),
"papers" : {
    "text" : "RT @sydest: Sütaş reklamlarındaki inekleri erkekler seslendirdiği sürece bu cinsiyet ayrımcılığı bitmez...",
    "ID" : null,
    "paragraphs" : [
        {
        "text" : "RT @sydest: Sütaş reklamlarındaki inekleri erkekler seslendirdiği sürece bu cinsiyet ayrımcılığı bitmez...",
        "ID" : "0P107",
        "sentences" : [
            {
            "text" : "RT @sydest: Sütaş reklamlarındaki inekleri erkekler seslendirdiği sürece bu cinsiyet ayrımcılığı bitmez...",
            "ID" : "0S107",
            "words" : [
                {
                "text" : "RT",
                "ID" : "1W3"
                    },
                    {
                    "text" : "sydest",
                    "ID" : "5W11"
                    },
                    {
                    "text" : "Sütaş",
                    "ID" : "13W18"
                    },
                    {
                    "text" : "reklamlarındaki",
                    "ID" : "19W34"
                    },
                    {
                    "text" : "inekleri",
                    "ID" : "35W43"
                    },
                    {
                    "text" : "erkekler",
                    "ID" : "44W52"
                    },
                    {
                    "text" : "seslendirdiği",
                    "ID" : "53W66"
                    },
                    {
                    "text" : "sürece",
                    "ID" : "67W73"
                    },
                    {
                    "text" : "bu",
                    "ID" : "74W76"
                    },
                    {
                    "text" : "cinsiyet",
                    "ID" : "77W85"
                    },
                    {
                    "text" : "ayrımcılığı",
                    "ID" : "86W97"
                    },
                    {
                    "text" : "bitmez",
                    "ID" : "98W104"
                    }
                ]
            }
        ]
    }
]
}
}

在这个示例中,我有一张纸。在论文中,我有段落键和值句列表。同样,我在 setences 元素中有单词键和值单词列表。

我只想获取所有带有“ID”和“W”字母的“文本”。很快,我想一次将所有文档中的所有单词作为列表或元组获取。谢谢。

4

1 回答 1

2

我很确定有一种更漂亮的方式来实现你想要的,但这就是我想出的使用find().

MongoDB查询:

db.so.find({'papers.paragraphs': {$elemMatch: {'sentences': {$elemMatch: {'words': {$elemMatch: {'ID': {$regex: 'W'}}}}}}}}, {'papers.paragraphs.sentences.words.text': 1}).pretty();

蟒蛇代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pymongo

mongo_db = pymongo.MongoClient().test

cursor = mongo_db.so.find({'papers.paragraphs':
                               {'$elemMatch':
                                    {'sentences':
                                         {'$elemMatch':
                                              {'words':
                                                   {'$elemMatch':
                                                        {'ID': {'$regex': 'W'}}}}}}}},
                          {'papers.paragraphs.sentences.words.text': 1})

results = []
for result in cursor:
    for paragraph in result['papers']['paragraphs']:
        for sentence in paragraph['sentences']:
            for word in sentence['words']:
                results.append(word['text'])

print results  # prints [u'RT', u'sydest', ... ]

希望有帮助。

于 2013-05-24T14:17:09.600 回答