嵌入式關係
,]
}
>db.users.findone(,)
注意:以上查詢中 db 和 users 表示資料庫和集合。
這種資料結構的缺點是,如果使用者和使用者位址在不斷增加,資料量不斷變大,會影響讀寫效能。
引用式關係
這種方法需要兩次查詢,第一次查詢使用者位址的物件id(objectid),第二次通過查詢的id獲取使用者的詳細位址資訊。
>var result = db.users.findone(,)
>var addresses = db.address.find(
})
資料庫引用
成員中有別的資料庫裡的資料
dbref的形式:
三個字段表示的意義為:
$ref:集合名稱
$id:引用的id
$db:資料庫名稱,可選引數
dbref的形式:
三個字段表示的意義為:
$ref:集合名稱
$id:引用的id
$db:資料庫名稱,可選引數
address dbref 字段指定了引用的位址文件是在 runoob 資料庫下的 address_home 集合,id 為 534009e4d852427820000002。
>var user = db.users.findone(
)>var dbref = user.address
>>db[dbref.$ref]
.findone(
)
覆蓋查詢是以下的查詢:
由於所有出現在查詢中的字段是索引的一部分, mongodb 無需在整個資料文件中檢索匹配查詢條件和返回使用相同索引的查詢結果。
因為索引存在於ram中,從索引中獲取資料比通過掃瞄文件讀取資料要快得多。
我們在 users 集合中建立聯合索引,欄位為 gender 和 user_name :
>db.users.ensureindex(
)
現在,該索引會覆蓋以下查詢:
>db.users.find(
,)
檢視索引性質
對最小資料單元的操作
原子操作常用命令
$set
用來指定乙個鍵並更新鍵值,若鍵不存在並建立。
}
$unset
用來刪除乙個鍵。
}
$inc
$inc可以對文件的某個值為數字型(只能為滿足要求的數字)的鍵進行增減的操作。
}
$push
用法:
}
把value追加到field裡面去,field一定要是陣列型別才行,如果field不存在,會新增乙個陣列型別加進去。
p us
hall
同pushall 同
pushal
l同push,只是一次可以追加多個值到乙個陣列欄位內。
}
$pull
從陣列field內刪除乙個等於value值。
}
$addtoset
增加乙個值到陣列內,而且只有當這個值不在陣列內才增加。
$pop
刪除陣列的第乙個或最後乙個元素
}
$rename
修改欄位名稱
}
$bit
位操作,integer型別
}}
objectid 是乙個12位元組 bson 型別資料,有以下格式:
mongodb中儲存的文件必須有乙個"_id"鍵。這個鍵的值可以是任何型別的,預設是個objectid物件。
在乙個集合裡面,每個文件都有唯一的"_id"值,來確保集合裡面每個文件都能被唯一標識。
使用以下**生成新的objectid:
newobjectid = objectid(
)
>objectid(
"5349b4ddd2781d08c09890f4"
).gettimestamp(
)
isodate(
"2014-04-12t21:49:17z"
)
在某些情況下,您可能需要將objectid轉換為字串格式。你可以使用下面的**:
>new objectid().
str
總結3 引用
int a 10 int b a b就是a的別名 b 200 修改變數a中的內容 printf a d n b d n a,b a 與 b 的位址是相同的 在c中相當於以下效果 int const b a b 200 1.1 普通引用 舉例void swap int a,int b 1.2 引用所佔...
Perl學習筆記 二 引用
perl學習筆記之perl的引用 首先,應該明確所有的引用都是用標量來表示的.對於標量引用陣列採用 ref 對 標量引用雜湊採用 ref 1 對陣列的引用,採用 符號.舉例 1 對變數的引用 my lines qw a b c my ref lines print 引用整個陣列 print 0 引用...
學習筆記 五 引用型別
引用型別的值 物件 是引用型別的乙個例項。ecmascript提供了很多原生的引用型別 例如object 以便開發人員用以實現常見的計算任務。1.object型別 1 建立object例項的兩種方法 new object 和物件字面量表示法。一般常用物件字面量標識法 一是因為 量少,二是物件字面量可...