通過前面的學(xué)習(xí)認(rèn)知,我們了解了如何創(chuàng)建數(shù)據(jù)庫連接,如果使用指令進(jìn)行CRUD操作,以及如何定義集合Collection。本章我們繼續(xù)學(xué)習(xí)數(shù)據(jù)庫的投影操作Projection.
河?xùn)|網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,河?xùn)|網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為河?xùn)|1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的河?xùn)|做網(wǎng)站的公司定做!
通常情況下,在MongoDB數(shù)據(jù)庫中進(jìn)行查詢操作會(huì)返回所有的匹配文檔。為了限制MongoDB返回給應(yīng)用的數(shù)據(jù)大小,我們可以在查詢操作中包含投影文檔。
投影文檔
投影文檔中限制了所有匹配文檔的返回字段。投影文檔可以設(shè)置返回結(jié)果中需要包含哪些字段需要剔除哪些字段。投影文檔的使用格式如下:
{'projection':{field1:
下面列舉了上述的同時(shí)出現(xiàn)包含屬性和去除屬性的示例,_id屬性的特殊性也在其中體現(xiàn)。第一種寫法是不允許的,第二種寫法是允許的。
{'projection'=>{'name'=>1,'location'=>0}} 不允許
{'projection'=>{'name'=>1,'_id'=>0}} 允許
1.2 代碼實(shí)例
下面的代碼實(shí)例使用companies樣本數(shù)據(jù)
為了返回所有滿足查詢條件的匹配文檔companies中的name,location和_id字段,我們需要明確指出結(jié)果中包含name和loaction,如果沒有明確描述出要去除_id字段,_id字段會(huì)被自動(dòng)包含在返回結(jié)果中。
client=Mongo::Client.new(['127.0.0.1:27017'],:database=>'test')
collection=client[:companies]
collection.find({},{'projection'=>{'name'=>1,'location'>1}}).limit(5).each do |doc|
p doc
end
為了實(shí)現(xiàn)只返回name和location字段,排除包含_id在內(nèi)的其他字段,使用下面的形式,明確指出需要排除_id字段。
{'projection'=>{'name'=>1,'location'=>1,'_id'=>0}}
如果想要返回除了location字段的其他所有字段,使用下面的指令
{'projection'=>{'location'=>0}}