2017-09-01 13 views
0

特定のフィールドが存在する場合はすべてのドキュメントを取得するクエリを作成したいが、ドキュメントからフィールドを削除し、ドキュメントから残りのフィールドをすべて取り出す。例えば 私はMongoDBの中3枚の書類を持っている場合、私はすべての文書where aptype = "periodic"を取得したいとcancel_dateフィールドが文書内に存在する場合だけcancel_dateフィールドmongodbにフィールドが存在する場合にクエリを作成する方法

{ 
    "_id":"8de3e5ec-caa9-4497-89a9-239713e2a2ed", 
    "user_id":"6b54be23-0880-4e22-8882-93feea935f12", 
    "weekend_price":60000, 
    "weekend_wage":40000, 
    "active":1, 
    "dows":[ 
     "2", 
     "1", 
     "6" 
    ], 
    "product_type_id":"adsfkasjd12312", 
    "working_time":320, 
    "datetime": ISODate("2017-09-11T10:10:00Z"), 
    "price":60000, 
    "office_id":"testoffice", 
    "wage":40000, 
    "manager_id":"653d047a-e9e3-4161-b2b6-7308f9ad38e5", 
    "product_id":"543bee5b-43a0-4c98-976f-a371cafb33e4", 
    "aptype":"periodic", 
    "cancel_date":[ 
     ISODate("2017-09-13T00:00:00Z") 
    ] 
} 

{ 
    "_id":"5df00497-e95a-4124-abb0-2ade426c741f", 
    "product_type_id":"adsfkasjd12312", 
    "working_time":320, 
    "datetime": ISODate("2017-09-03T10:10:00Z"), 
    "wage":100000, 
    "aptype":"periodic", 
    "dows":[ 
     "1", 
     "4", 
     "6" 
    ], 
    "price":111111, 
    "active":1, 
    "weekend_price":70000, 
    "weekend_wage":50000, 
    "user_id":"c1676bd5-d9b3-452d-8c93-f710176bb33c", 
    "office_id":"testoffice", 
    "product_id":"140ceaad-1832-444c-95f6-c8053b242bcb", 
    "manager_id":"" 
} 

{ 
    "_id":"e5d5a046-caf7-4372-a101-f5260ec0af0a", 
    "product_type_id":"adsfkasjd12312", 
    "working_time":320, 
    "datetime": ISODate("2017-09-02T10:10:00Z"), 
    "wage":40000, 
    "aptype":"one_time", 
    "price":60000, 
    "active":1, 
    "weekend_price":60000, 
    "weekend_wage":40000, 
    "user_id":"c1676bd5-d9b3-452d-8c93-f710176bb33c", 
    "office_id":"testoffice", 
    "product_id":"543bee5b-43a0-4c98-976f-a371cafb33e4", 
    "manager_id":"" 
} 
せずに文書を入手

希望の結果はキャンセルされます(cancel_dateフィールドは削除されました

{ 
    "_id":"8de3e5ec-caa9-4497-89a9-239713e2a2ed", 
    "user_id":"6b54be23-0880-4e22-8882-93feea935f12", 
    "weekend_price":60000, 
    "weekend_wage":40000, 
    "active":1, 
    "dows":[ 
     "2", 
     "1", 
     "6" 
    ], 
    "product_type_id":"adsfkasjd12312", 
    "working_time":320, 
    "datetime": ISODate("2017-09-11T10:10:00Z"), 
    "price":60000, 
    "office_id":"testoffice", 
    "wage":40000, 
    "manager_id":"653d047a-e9e3-4161-b2b6-7308f9ad38e5", 
    "product_id":"543bee5b-43a0-4c98-976f-a371cafb33e4", 
    "aptype":"periodic" 
} 

{ 
    "_id":"5df00497-e95a-4124-abb0-2ade426c741f", 
    "product_type_id":"adsfkasjd12312", 
    "working_time":320, 
    "datetime": ISODate("2017-09-03T10:10:00Z"), 
    "wage":100000, 
    "aptype":"periodic", 
    "dows":[ 
     "1", 
     "4", 
     "6" 
    ], 
    "price":111111, 
    "active":1, 
    "weekend_price":70000, 
    "weekend_wage":50000, 
    "user_id":"c1676bd5-d9b3-452d-8c93-f710176bb33c", 
    "office_id":"testoffice", 
    "product_id":"140ceaad-1832-444c-95f6-c8053b242bcb", 
    "manager_id":"" 
} 

答えて

0

のMongoDBでの選択でフィールドを排除するためにどのようにこのドキュメントをチェックアウト。 https://docs.mongodb.com/v3.0/tutorial/project-fields-from-query-results/例えば

db.yourtablename.find({ aptype : 'periodic' }, { cancel_date :0 }) 

このクエリは、select文でCANCEL_DATEを削除します。

+0

ご協力いただきありがとうございます。ただし、これにより、cancel_dateが存在するドキュメントのみが表示され、cancel_dateが存在しないドキュメントも表示したいと考えています。 –

+0

これにより、両方のドキュメントが表示されます。チェックする。このクエリは、mongodbのデータにある場合、cancel_dateを削除することを意味します。 –

+0

ああそうです。 –

関連する問題