2017-09-01 77 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":"" 
} 

所以我想要的结果将会是(取消日期字段删除where _id='8de3e5ec-caa9-4497-89a9-239713e2a2ed'

{ 
    "_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

哦,是的,你是对的我认为完全错误的方式谢谢。 –

相关问题