我在Mongo DB中有一个文档,其结构如下:
{
"username" : "John Doe",
"userdocument" : "1026254745",
"user_id" : "6QH70tZrPbTDvqmOtUCcT9",
"createAt" : ISODate("2017-03-22T22:01:15.808Z"),
"network_clients" : [
{
"client_id" : "6XvzpJ2IwnVT66pEkKU7E3",
"_id" : ObjectId("58d2f47dc9a288179cecb996"),
"usertype" : "client"
},
{
"client_id" : "07nPfV5TEH1qTLDBK2xIMe",
"_id" : ObjectId("58d321aa26417b20f34bc7e7"),
"usertype" : "client"
},
{
"client_id" : "3b45WntXG6KMX12qSEyMGc",
"_id" : ObjectId("590baf16ea97a217e4834370"),
"usertype" : "supplier"
}
],
"useravatar" : "https://pos-lisa.s3.amazonaws.com/useravatar-1493859018209.jpg",
"comments" : "",
}
我喜欢使用" client_id" " usertype"领域。我在使用mongoose的mongoDB中尝试以下内容:
User.aggregate({ $match:
{ $and:
[
{ 'network_clients.client_id': clientId },
{ 'network_clients.usertype': userType }
]
}
}).sort({ username: 'ascending' })
在我的应用程序中,用户可以是我的一个客户的供应商,同一个用户可以是我的其他客户的客户,但是通过这种实现,mongo总是发送给我的用户,无论他是否是客户或供应商,所以我的客户在"客户列表中看到用户"在供应商列表"
中如何在本文档的内部数组中创建过滤器?提前谢谢
答案 0 :(得分:0)
我不确定我是否正在按照你想要的方式跟踪你。但也许这很接近它:
User.aggregate({$project:{'username':1,'network_clients':1}},
{$unwind:'$network_clients'},
{$match:{'network_clients.client_id':clientId,'network_clients.usertype':userType}},
{$sort:{username:1}})