小编Kav*_*ali的帖子

Mongodb从String到ObjectId加入_id字段

我有两个系列

  1. 用户

             {
                 "_id" : ObjectId("584aac38686860d502929b8b"),
                 "name" : "John"
             }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 角色

     {
         "_id" : ObjectId("584aaca6686860d502929b8d"),
         "role" : "Admin",
         "userId" : "584aac38686860d502929b8b"  
     }
    
    Run Code Online (Sandbox Code Playgroud)

我想基于userId(在角色集合中) - _id(在用户集合中)加入这些集合.

我尝试了以下查询:

db.role.aggregate(
{
   $lookup:
   {
       from: 'user',
       localField: 'userId',
       foreignField: '_id',
       as: 'output'
   }
}
);
Run Code Online (Sandbox Code Playgroud)

只要我将userId存储为ObjectId,这就给了我预期的结果.当我的userId是一个字符串时,没有结果.Ps:我试过了

foreignField:'_ id'.valueOf()

foreignField:'_ id'.toString()

.但是基于ObjectId-string字段匹配/加入没有运气.

任何帮助将不胜感激.

lookup join mongodb aggregation-framework objectid

17
推荐指数
3
解决办法
2万
查看次数

Mongodb检查重复记录以进行批量插入

我的收藏有以下记录:

{ "_id":"1", "field1":"foo","field2":"xyz", "field3":"something" ...}
{ "_id":"2", "field1":"bar","field2":"xyz", "field3":"something" ...}
{ "_id":"3", "field1":"foo","field2":"abc", "field3":"something" ...}
{ "_id":"4", "field1":"bar","field2":"lmn", "field3":"something" ...}
Run Code Online (Sandbox Code Playgroud)

在插入新记录之前,我需要检查是否已存在具有相同field1和field2值的记录。然后,如果该请求已经存在,则将其丢弃。如果我一次插入一个记录,我可以做到这一点。如果我进行批量插入(即在我插入文档数组时),该如何处理?

我有[field1, field2]需要查询EX 的组合数组:

queryArray=[ { "field1":"foo","field2":"xyz"},
             { "field1":"bar","field2":"lmn"} ]
Run Code Online (Sandbox Code Playgroud)

预期结果:

result=[  { "_id":"1", "field1":"foo","field2":"xyz", "field3":"something" ...},
          { "_id":"4", "field1":"bar","field2":"lmn", "field3":"something" ...}]
Run Code Online (Sandbox Code Playgroud)

arrays mongodb mongodb-query mongoskin

2
推荐指数
1
解决办法
1444
查看次数

带有HttpOnly标志的Cookie,用于Https协议上的angularJs应用程序

我有一个Angular Js应用程序,使用https协议与服务器通信.我使用cookie来存储登录用户的名字和jwt令牌.下面是我用来设置cookie的代码.

    $cookies.putObject('token', token, {
        expires: exp,
        secure: true
      });
Run Code Online (Sandbox Code Playgroud)

为了从安全团队获得我的应用程序许可,我需要为cookie设置HttpOnly标志.

当我打开我的网站的cookie时,我看到两个项目

  1. connect.sid - 不确定如何创建它.我没有做任何明确的事情来创建这个cookie.
  2. token - 这是我创建的用于存储用户及其jwt令牌的cookie.

我搜索并做了必要的更改,在这些cookie上设置HttpOnly标志.它工作,我可以看到两个cookie都有HttpOnly标志检查.但在此更改后,我的身份验证停止工作(即我无法访问cookie中的jwt集).换句话说,我与后端的沟通被打破了.我使用下面的语句来读取cookie.

$cookies.getObject('token')
Run Code Online (Sandbox Code Playgroud)

我不得不恢复一些改变以恢复到以前的状态.现在,connect.sid cookie设置为HttpOnly标志而令牌cookie不设置.我想知道这里一定是什么问题.我是Angular Js的新手,之前从未参与过Cookie管理.任何帮助将不胜感激.

cookies https httponly angularjs

1
推荐指数
1
解决办法
7298
查看次数