簡體   English   中英

如何在NoSQL中查詢關系?

[英]How to query relations in NoSQL?

我決定將我的數據庫從MySQL移到Mongo,因為大多數時候,我的數據不是結構化的。 它讓我在傳統的SQL中過於復雜。

我目前面臨的一個問題是如何在NoSQL中使用傳統的SQL關系模型。 我已多次讀過NoSQL不是為處理關系而設計的。 我是否需要將它們作為數組添加到具有關系的文檔中?

這種情況讓我陷入困境。 在SQL中,我有一個單獨的oauth訪問令牌表,其中包含user_id,client_id,access_token,expires作為其屬性。 用戶和access_token之間是1-N關系。 我如何在NoSQL中做到這一點? 通過添加數組字段oauth_tokens? 如果我這樣做,我如何在數組中搜索令牌? 我該如何查詢

search for a document where the _id is $user_id and there is an element
with $token in the access_tokens array?

這里至少有兩個選項:

  1. 您可以將oauth_tokens存儲在單獨的集合中(就像在其他表中的MySQL中一樣),並添加到oauth_token字段,例如user_id,其中包含來自users集合的當前用戶的_id值。 為指定用戶查找令牌只是在oauth_tokens集合中搜索具有給定user_id的文檔。 請記住,Mongo不會以任何方式“支持”這種關系 - 數據庫不會幫助您保持字段user_id的值正確。

例:

db.tokens.insert({ client_id : "1", user_id : "20", access_token : "1234567890", expires : new Date(2014-12-31)})

查詢:

db.tokens.find({user_id:"20"})
  1. 就像你寫的:你可以在用戶文檔中嵌入標記並查詢現有標記。 檢查文檔以了解如何查詢嵌入式文檔: 鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM