Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在nodejs中的数组中查找现有对象_Javascript_Json_Node.js_Mongodb - Fatal编程技术网

Javascript 在nodejs中的数组中查找现有对象

Javascript 在nodejs中的数组中查找现有对象,javascript,json,node.js,mongodb,Javascript,Json,Node.js,Mongodb,嗨,这是我的集合,我只想在subcriber数组中查找userId,如果两个userId都存在于subcriber数组中,而不是创建新集合并返回相同的channelId。如果两个userId都不存在于subcriber数组中,那么创建新文档如何在数组中搜索userId。 这是我的收藏 { "_id" : ObjectId("58dd1013e973fc0004743443"), "createdAt" : ISODate("2017-03-30T14:02:59.175Z"), "updated

嗨,这是我的集合,我只想在subcriber数组中查找userId,如果两个userId都存在于subcriber数组中,而不是创建新集合并返回相同的channelId。如果两个userId都不存在于subcriber数组中,那么创建新文档如何在数组中搜索userId。 这是我的收藏

{
"_id" : ObjectId("58dd1013e973fc0004743443"),
"createdAt" : ISODate("2017-03-30T14:02:59.175Z"),
"updatedAt" : ISODate("2017-03-30T14:02:59.175Z"),
"timestamp" : "2017-03-30",
"channelId" : "CH-EU7D",
"createdById" : "58dcc3cd9a7a301308b62857",
"message" : "",
"subcriber" : [ 
    {
        "userId" : "58dcc3cd9a7a301308b62857",
        "channelId" : "CH-EU7D",
        "_id" : ObjectId("58dd1013e973fc0004743444"),
        "status" : "accepted"
    }, 
    {
        "userId" : "58dcc3ec9a7a301308b62859",
        "channelId" : "CH-EU7D",
        "_id" : ObjectId("58dd1013e973fc0004743445"),
        "status" : "pending"
    }
],
"__v" : 0
}

我试过这个,但不起作用

Channel.find({ 'subcriber.userId': b.userId }, { $and: [{ 'subcriber.userId': b.friendId }] }

在nodejs中,您可以对json数组使用JavaScript方法来测试是否有任何匹配的
useId
,您将需要编写如下内容:

function checkUserId(array, userId) {
  return array.some(function(element) {
    return userId === element.userId;
  });
}
这是一个演示片段:

函数checkUserId(数组,userId){
返回数组.some(函数(元素){
返回userId==element.userId;
});
}
var json={
“_id”:“58dd1013e973fc0004743443”,
“createdAt”:“2017-03-30T14:02:59.175Z”,
“更新日期”:“2017-03-30T14:02:59.175Z”,
“时间戳”:“2017-03-30”,
“信道ID”:“CH-EU7D”,
“createdById”:“58dcc3cd9a7a301308b62857”,
“电文”:“,
“转载者”:[{
“用户ID”:“58dcc3cd9a7a301308b62857”,
“信道ID”:“CH-EU7D”,
“_id”:“58dd1013e973fc0004743444”,
“状态”:“已接受”
},
{
“用户ID”:“58dcc3ec9a7a301308b62859”,
“信道ID”:“CH-EU7D”,
“_id”:“58dd1013e973fc0004743445”,
“状态”:“待定”
}
]
};
//检查现有用户标识
log(checkUserId(json.subcriber,“58dcc3ec9a7a301308b62859”);
//检查不存在的用户标识

log(checkUserId(json.subcriber,“58dcc3ec9a7a300000000000859”)对于此类问题,可以使用mongodb的$elemMatch

db.getCollection('channels').find({subcriber:{"$elemMatch":{userId:"58dcc3cd9a7a301308b62857",userId:'58dcc3ec9a7a301308b62859'}}})