节点JS猫鼬如何从两个集合获取记录
在下面的那个收藏我想尝试从coin_infos
和_id
的coin_infos
coin_id
的wallet_infos
收集匹配user_id
获取所有记录。
coin_infos收藏
_id:objectID(5a4b07b2a0050c20a6be44b3),
coin_code:BTC,
wallet_name:bitcoin,
deposite_txn_fee:3,
min_withdrawn:5,
withdrawn_txn_fee:0.001,
wallet_infos收藏
_id:objectID(5a58a4e222068e053d71220d),
user_id:5a4b0787a0050c20a6be44b2,
coin_id:5a4b07b2a0050c20a6be44b3,
balance:3.122858,
我有用户ID - :5a4b0787a0050c20a6be44b2
输出看起来像这样:..
{
_id:objectID(5a4b07b2a0050c20a6be44b3),
coin_code:BTC,
wallet_balance:3.122858,
wallet_name:bitcoin,
deposite_txn_fee:3,
min_withdrawn:5,
withdrawn_txn_fee:0.001,
"match_records" : [
_id:objectID(5a58a4e222068e053d71220d),
user_id:5a4b0787a0050c20a6be44b2,
coin_id:5a4b07b2a0050c20a6be44b3,
balance:3.122858,
]
}
我的MongoDB的版本是3.2.11。
回答如下:您可以使用$lookup
和蒙戈版本已经$match
总管道,因为你3.2+
$lookup
加入与coin_infos
wallet_infos
coin_id
集合,如果发现匹配,钱包信息将返回作为嵌入的文档,从嵌入文档,你可以USER_ID做$match
和过滤器
db.coin_infos.aggregate(
[
{
$lookup : {
from : "wallet_infos",
localField : "_id",
foreignField: "coin_id",
as : "walletInfo"
}
},
{$match : {"walletInfo.userId" : "5a4b0787a0050c20a6be44b2"}}
]
)
节点JS猫鼬如何从两个集合获取记录
在下面的那个收藏我想尝试从coin_infos
和_id
的coin_infos
coin_id
的wallet_infos
收集匹配user_id
获取所有记录。
coin_infos收藏
_id:objectID(5a4b07b2a0050c20a6be44b3),
coin_code:BTC,
wallet_name:bitcoin,
deposite_txn_fee:3,
min_withdrawn:5,
withdrawn_txn_fee:0.001,
wallet_infos收藏
_id:objectID(5a58a4e222068e053d71220d),
user_id:5a4b0787a0050c20a6be44b2,
coin_id:5a4b07b2a0050c20a6be44b3,
balance:3.122858,
我有用户ID - :5a4b0787a0050c20a6be44b2
输出看起来像这样:..
{
_id:objectID(5a4b07b2a0050c20a6be44b3),
coin_code:BTC,
wallet_balance:3.122858,
wallet_name:bitcoin,
deposite_txn_fee:3,
min_withdrawn:5,
withdrawn_txn_fee:0.001,
"match_records" : [
_id:objectID(5a58a4e222068e053d71220d),
user_id:5a4b0787a0050c20a6be44b2,
coin_id:5a4b07b2a0050c20a6be44b3,
balance:3.122858,
]
}
我的MongoDB的版本是3.2.11。
回答如下:您可以使用$lookup
和蒙戈版本已经$match
总管道,因为你3.2+
$lookup
加入与coin_infos
wallet_infos
coin_id
集合,如果发现匹配,钱包信息将返回作为嵌入的文档,从嵌入文档,你可以USER_ID做$match
和过滤器
db.coin_infos.aggregate(
[
{
$lookup : {
from : "wallet_infos",
localField : "_id",
foreignField: "coin_id",
as : "walletInfo"
}
},
{$match : {"walletInfo.userId" : "5a4b0787a0050c20a6be44b2"}}
]
)