14

pymongoを介してmongodbに挿入したデータを取得しようとしています。

挿入用の私のコードは以下のとおりです(正規表現を介して解析した後)

if connection is not None:
    db.model.insert({"time": datetime.datetime(int(int3), int(int1),
                                               int(int2), int(int4),
                                               int(int5), int(int6),
                                               int(int7))})

次に、シェルに2つのデータポイントを入力しました。

>>> start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764)
>>> end = datetime.datetime(2012, 2, 2, 6, 55, 3, 381)

次に、これら2つのデータポイント間のデータの範囲をクエリして、返されたものを受け取りました。

>>> db.wing_model.find({'time': {'$gte': start, '$lt': end}})
<pymongo.cursor.Cursor object at 0x0301CFD0>
>>> db.wing_model.find({'time': {'$gte': start, '$lt': end}})
<pymongo.cursor.Cursor object at 0x0301C110>

データは以下のとおりです。

[02/02/2012 06:32:07.334][INFO]
[02/02/2012 06:32:07.334][INFO]
[02/02/2012 06:32:07.334][INFO]
[02/02/2012 06:32:13.711][INFO]
[02/02/2012 06:32:13.711][INFO]
[02/02/2012 06:32:13.711][INFO]
[02/02/2012 06:32:22.473][INFO]
[02/02/2012 06:32:22.473][INFO]
[02/02/2012 06:32:22.473][INFO]
[02/02/2012 06:35:06.764][INFO]
[02/02/2012 06:35:06.765][INFO]
[02/02/2012 06:35:06.765][INFO]
[02/02/2012 06:54:52.008][INFO]
[02/02/2012 06:54:52.008][INFO]
[02/02/2012 06:54:52.008][INFO]
[02/02/2012 06:54:59.512][INFO]
[02/02/2012 06:54:59.512][INFO]
[02/02/2012 06:54:59.512][INFO]
[02/02/2012 06:55:03.381][INFO]
[02/02/2012 06:55:03.381][INFO]
[02/02/2012 06:55:03.381][INFO]
[02/02/2012 06:55:06.142][INFO]
[02/02/2012 06:55:06.142][INFO]
[02/02/2012 06:55:06.142][INFO]
[02/02/2012 06:55:09.652][INFO]
[02/02/2012 06:55:09.652][INFO]
[02/02/2012 06:55:09.652][INFO]
[02/02/2012 06:55:13.396][INFO]
[02/02/2012 06:55:13.396][INFO]

'start'データと'end'データの間のすべてを返すクエリを取得するにはどうすればよいですか?

また、これをわかりやすい形で受け取るにはどうすればよいですか?

最後に、同じクエリが異なるカーソルオブジェクトの場所を返すのはなぜですか?

ありがとうございました。

4

2 に答える 2

27

既存の基本的なチュートリアルドキュメントの繰り返し:

start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764)
end = datetime.datetime(2012, 2, 2, 6, 55, 3, 381)

for doc in db.wing_model.find({'time': {'$gte': start, '$lt': end}}):
    print doc

最後に、同じクエリが異なるカーソルオブジェクトの場所を返すのはなぜですか?

それはどこにあるべきですか?

同じ結果セットを返す可能性が高い2つの異なるカーソルインスタンスが表示されます-または?

于 2012-08-14T17:38:03.753 に答える
-2
@staticmethod
def _get_results_to_json(data):
    """Get documents from a MongoDB search result.
    Transforms MongoDB BSON documents into JSON serializable documents.
    This process converts the ObjectIds into hexadecimal strings.
    Parameters
    ----------
    data : `~pymongo.cursor.Cursor`
        A MongoDB search result.
    Returns
    -------
    |list| of |dict|
        A list of JSON serializable documents.
    """
    if isinstance(data, Cursor):
        data = list(data)

    if isinstance(data, list):
        for doc in data:
            doc['_id'] = str(doc['_id'])
    elif isinstance(data, dict):
        data['_id'] = str(data['_id'])

    return data

_get_results_to_json(db.wing_model.find({'time': {'$gte': start, '$lt': end}}))
于 2019-01-11T19:15:46.317 に答える