我在工作中有一個有趣的問題。我們有一個文檔的結構是這樣的:搜索嵌套在另一個文檔中的一組文檔
{
"q" : "c1179beb-2db4-4052-b10d-f0c1332436f3",
"ssm" : {
"0168edb0-c25d-42ba-ba6d-918c4f61f6e1" : {
"xas" : [],
"dob" : ISODate("2001-01-01T00:00:00.000Z"),
"we" : "bow-bq",
"gndr" : "M",
"lcd" : ISODate("2014-02-21T09:00:04.575Z"),
"re" : "tyjhgj",
"s" : "0168edb0-c25d-42ba-ba6d-918c4f61f6e1",
"scsv" : "testdata",
"sg" : {
"grd" : "FOUR",
"gdn" : "4"
},
"sno" : "100000002",
"sss" : "Ha",
"stst" : {
"tk" : "226",
"tn" : "That"
},
"tsd" : ISODate("2014-02-21T08:35:51.075Z")
},
"016e48fa-5c24-4fd5-b078-5333991de013" : {
"xas" : [],
"dob" : ISODate("2001-01-01T00:00:00.000Z"),
"we" : "dsgsdf",
"gndr" : "M",
"lcd" : ISODate("2014-02-21T09:04:11.995Z"),
"lia" : 53,
"re" : "ghjghjgh",
"s" : "016e48fa-5c24-4fd5-b078-5333991de013",
"scsv" : "testdata",
"sg" : {
"grd" : "FOUR",
"gdn" : "4"
},
"sno" : "100000029",
"sss" : "Ha",
"stst" : {
"tk" : "86",
"tn" : "That"
},
"tsd" : ISODate("2014-02-21T08:50:55.821Z")
},
"076fc7ab-264b-4814-9f3a-db9f8222d02f" : {
"xas" : [],
"dob" : ISODate("2001-01-01T00:00:00.000Z"),
"we" : "hjhyyio",
"gndr" : "M",
"lcd" : ISODate("2014-02-21T09:04:58.299Z"),
"lia" : 53,
"re" : "qsdrfg",
"s" : "076fc7ab-264b-4814-9f3a-db9f8222d02f",
"scsv" : "testdata",
"sg" : {
"grd" : "FOUR",
"gdn" : "4"
},
"sno" : "100000003",
"sss" : "HA",
"stst" : {
"tk" : "161",
"tn" : "That"
},
"tsd" : ISODate("2014-02-21T08:52:04.471Z")
},
"try" : "34534",
"jyu" : ISODate("2014-03-01T07:59:59.000Z"),
"poij" : ISODate("2014-01-08T08:00:00.000Z")
}
}
顯然,這是已被編輯隱藏源數據,但結構是一樣的。
我正在嘗試編寫一個查詢,該查詢將在子文檔「ssm」中包含的子文檔的「s」字段上進行搜索。
我已經嘗試使用$ elementmatch以及使用標準點符號。我遇到的問題是,「ssm」字段更多地是子集合而不是子文檔。我有點失落,希望得到一些建議。
閱讀Mongo文檔我似乎無法找到任何方式來查詢子集合。谷歌向我展示了很多方法來查詢sud-documents的ARRAY,但這不是我在這裏處理的。
請幫忙!
謝謝!你證實了我的懷疑。我同意這種結構從根本上是錯誤的,我不太清楚爲什麼它是這樣設計的。不幸的是,這個決定高於我的薪酬等級。我會繼續嘗試指出設計中的缺陷,並希望有人會聽。這樣說,我還沒有嘗試使用展開功能,因爲你在你的其他答案。我會試一試,看看我能不能湊齊一些東西。最終,我很可能會回到我嘗試過的真正的python/pymongo組合上來解開集合的結構。再次感謝! – nrmjba