2017-10-24 19 views
1

Baqendに格納されているデータの "深いクエリ"は可能ですか?このような詳細なデータクエリ

何か:

db.Shifts.find() 
    .where({ 
     "applicants.applicants": { "$in": ["db/User/12"] }, 
    }) 

applicants.applicants異なるデータクラスに保存されている設定への参照です。

フィルタなしで

、データがこのような形をしている:彼らは両方のユーザーを持っているので、

Array [ 
    Object { 
    "id": "/db/Shifts/123", 
    "applicants": Object { 
     "applicants": Array [ 
     "/db/User/12", 
     "/db/User/13", 
     ], 
    }, 
    Object { 
    "id": "/db/Shifts/456", 
    "applicants": Object { 
     "applicants": Array [ 
     "/db/User/12", 
     "/db/User/14", 
     ], 
    }, 
    Object { 
    "id": "/db/Shifts/789", 
    "applicants": Object { 
     "applicants": Array [ 
     "/db/User/13", 
     "/db/User/14", 
     ], 
    }, 
] 

だから私は唯一の123と456をシフト返されたクエリを作成しようとしている。この場合、に12.ですこれは可能ですか、クライアント側でデータを取得した後、Ramdaを使用してフィルタリングする必要がありますか?

答えて

1

ディープクエリーは、オブジェクト内にapplicantsが格納されている場合にのみ可能です。 Hereは実際には私たちのガイドのこの深いクエリの例です。ここではactivities.startでフィルタリングします。

db.Shifts.find() 
    .in('applicants.applicants', "/db/User/12") 
    .resultList() 
    .then(shifts => ...) 

ます。また、一度あなたがそれを空想した場合、複数のユーザーを検索することができます

あなたのクエリは次のようになります。

db.Shifts.find() 
    .in('applicants.applicants', "/db/User/12", "/db/User/13", "/db/User/14") 
    .resultList() 
    .then(shifts => ...) 

これは、ユーザー12,13または14のいずれかが申請者である場合のシフトをすべて返します。

アプリケーションが別のクラスApplicantクラス言う)に申請を格納し、唯一Shiftsクラスの中にそれらを参照する場合は、あなたが最初の申請を照会する必要があるが、このようなオブジェクト:

db.Applicants.find() 
    .in('applicants', "/db/User/12") 
    .resultList() 
    .then(applicantObjects => ...) 

付きこれらのあなたは、このことができます。この

​​3210

希望のようなShiftsを照会することができます;)

+0

Erik、これはうまく働いた!ありがとう!私は文字通り、このソリューションを手に入れようと、昨日一日中過ごしました。 –