sql >> データベース >  >> NoSQL >> MongoDB

明確な$elemMatch

    tests.device_serialは配列だと思います、ここにあなたの間違いがあります:

     db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})
    

    個別のコマンドでのクエリは、配列'tests'が含むドキュメントをフィルタリングすることです。 配列内のフィールドだけでなく、値が「」のdevice_serialという名前のフィールド。

    必要なことを実現するには、集計フレームワークを使用し、配列を複数のドキュメントにアンワインドし、$ addToSetコマンドを使用してnullでフィルタリングおよびグループ化し、個別の値を取得します。

    クエリは次のとおりです:

    db.sessions.aggregate(
        [
            {
                $unwind: {
                    path : "$tests"
                }
            },
            {
                $match: {
                "tests.device_serial":{$ne:""}
                }
            },
            {
                $group: {
                  "_id":null,
                    "device_serials":{$addToSet:"$tests.device_serial"}
                }
            },
        ]
    );
    



    1. Mongodbupsert埋め込みドキュメント

    2. KartikFileInputウィジェットを使用して複数の画像ファイルを保存する

    3. MongoDB書き込みの懸念:3つの知っておくべき警告

    4. Mongooseを使用してMongoDBの多くのレコードを更新するための正しいアプローチは何ですか