我有以下格式我蒙戈實例文檔中檢索特定元素的數據,查找查詢發現MongoDB中
{
"_id" : "08d4a242-08fb-07f7-46e5-8717a81d5b70",
"fname" : "john",
"created_date" : ISODate("2017-05-24T01:13:06.829Z"),
"customProp" : [
[
"customX","{\"some data related to X \"}"
],
[
"customY","{\"some data related to Y \"}"
],
[
"customZ","{\"some data related to Z \"}"
]
]
}
元素/值分別爲「customX」,「customY 「&」customZ「不一定在所有文檔中。如何檢索「customProp」數組的第二個元素中的所有值,在本文檔中它包含「customZ」?
我能使用下面的查詢過濾&找到所有這些有「customZ」元素的文件,
db.getCollection('col1').find({$and : [{"customProp":{$elemMatch:{0:"customZ"}}}, {"created": { $gte: ISODate("2017-05-22T00:00:00.000Z") }}] },{"created":1}).limit(1) .pretty()
輸出:
{
"_id" : "08d4a242-08fb-07f7-46e5-8717a81d5b45",
"created" : ISODate("2017-05-24T01:13:06.829Z")
}
而是尋找一種方法來檢索所有數組第二個元素中第一個值爲「customZ」的值。
預期的結果:
{
"_id" : "08d4a242-08fb-07f7-46e5-8717a81d5b45",
"created" : ISODate("2017-05-24T01:13:06.829Z"),
"customPro": ["customZ","{\"some data related to Z \"}"]
}
我很好,如果我的查詢只返回
{
"{\"some data related to Z \"}"
}
如果是我,我會改變我的數據模型,這樣我就不會在對象中存儲JSON字符串。而是存儲對象的實際屬性。 – bhspencer
@Veeram其實很不一樣。另外,OP實際上已經知道如何正確地將'elemMatch'應用到他們的案例中。這只是他們需要幫助的投影的另一部分。 –