我正在使用mongoosejs并为用户提供如下的MongoDB架构:
{
"_id" : ObjectId("my local id"),
"gravatar" : "user gravatar",
"username" : "users username",
"displayName" : "Shivaraman I",
"provider" : "facebook",
"providerData" : {
"accessToken" : "facebook access token",
"work" : [
user work history
],
"verified" : true,
"updated_time" : "2015-02-04T13:23:44+0000",
"timezone" : 1,
"name" : "Shivaraman Iyer",
"locale" : "en_GB",
"link" : "user link",
"last_name" : "Iyer",
"gender" : "male",
"first_name" : "Shivaraman",
"email" : "email on facebook",
"education" : [
facebook user education list
],
"id" : "user's facebook id"
},
...
"lastName" : "Iyer",
"firstName" : "Shivaraman",
}
我想根据id
中的他/她的脸书providerData
搜索用户。我做了很多搜索,只找到了适用于数组子文档的elemMatch
方法。但我需要一些适用于这种子文档格式的东西。
一直在搜索,但没有找到任何东西。任何帮助都会很棒。
谢谢
答案 0 :(得分:1)
var query = collection.find();
query.where('providerData.id', id);
然后执行查询。它将解决问题
答案 1 :(得分:0)
非常简单,你可以使用简单的find()
,你可以直接将对象位置作为键及其值作为投影传递。
在你的情况下
db.collection.find({
"providerData.id":id
});
这会给你结果。
将collection关键字替换为您的收藏名称。