小编chr*_*dam的帖子

MongoDB聚合项目字符串到ObjectId

我试图将十六进制字符串转换为聚合查询中的等效ObjectID.我尝试了两种不同的方法:

db.omvas.aggregate([
    {$project:{
        EID:{$let: {
               vars: {
                  id:  "$EID"
               },
               in: ObjectId("$$id")
            }},
        }
    },
    {$group:{
        _id:"$EID"
        }
    }
]);
Run Code Online (Sandbox Code Playgroud)

db.omvas.aggregate([
    {$project:{
        EID: ObjectId("$EID")
        }
    },
    {$group:{
        _id:"$EID"
        }
    }
]);
Run Code Online (Sandbox Code Playgroud)

我继续使用任一方法获得错误"错误:无效对象id:长度".我测试了添加一个文字字符串来代替聚合变量,我得到一个带有正确ObjectID的结果.似乎字符串值没有传递给Mongo的ObjectId函数,而是将变量名称作为文字字符串传递.

任何人都知道我想要完成的任务是否可行?我有什么魔法吗?

mongodb aggregation-framework

12
推荐指数
2
解决办法
7877
查看次数

如何删除mongodb中组返回的文件?

我是mongodb初学者,我正在做一个家庭作业问题,数据集看起来像这样

{ "_id" : { "$oid" : "50906d7fa3c412bb040eb577" }, "student_id" : 0, "type" : "exam", "score" : 54.6535436362647 }
{ "_id" : { "$oid" : "50906d7fa3c412bb040eb578" }, "student_id" : 0, "type" : "quiz", "score" : 31.95004496742112 }
{ "_id" : { "$oid" : "50906d7fa3c412bb040eb579" }, "student_id" : 0, "type" : "homework", "score" : 14.8504576811645 }
{ "_id" : { "$oid" : "50906d7fa3c412bb040eb57a" }, "student_id" : 0, "type" : "homework", "score" : 63.98402553675503 }
{ "_id" : { "$oid" : "50906d7fa3c412bb040eb57b" …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

11
推荐指数
3
解决办法
1万
查看次数

比较MongoDB中的两个日期字段

在我的收藏中,每个文档都有2个日期,修改和同步.我想找到那些修改>同步或同步不存在的那些.

我试过了

{'modified': { $gt : 'sync' }}
Run Code Online (Sandbox Code Playgroud)

但它没有表现出我的预期.有任何想法吗?

谢谢

datetime mongodb node.js mongodb-query aggregation-framework

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

根据mongoose,mongoDB中的条件填充

这是我的代码,以获得一个平面图并填充与此链接的所有单位

看下面的代码:

var floorplan = Floorplan.find({ 
    project: req.params.project, 
    tower: req.params.tower, 
    isDeleted: false 
});
floorplan.populate('flats').exec(function(err, floorplan) {
    if (err) { return res.send(err); }
    if (!floorplan) { return res.status(401).json(); }
    res.status(200).json(floorplan);
});
Run Code Online (Sandbox Code Playgroud)

但是我想只填充那些isDeleted的单位:false如何实现这个?

平面图的架构

var FloorplanSchema = new Schema({
    project: { type: Schema.ObjectId, ref: "Project" },
    flats: [{ type: Schema.ObjectId, ref: "Flat" }],
    tower: [{ type: Schema.ObjectId, ref: "Tower" }],
    unitType: String,
    area: Number,
    floorPlan2D: String,
    floorPlan3D: String,
    livingRoomArea: Number,
    kitchenArea: Number,
    balconies: Number,
    bathRooms: Number,
    isDeleted: { type: Boolean, 'default': false …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

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

Mongo db使用$ in在另一个查询中使用查询结果

我在mongo db中有以下模型:

用户集合

{
_id:12345,
name:15,
age:"Joe",
}
Run Code Online (Sandbox Code Playgroud)

地址集合

{
_id:7663,
userId:12345,
Street:"xyz",
number:"1235",
city:"New York",
state:"NY"
}
Run Code Online (Sandbox Code Playgroud)

现在我想得到20岁以上用户的所有地址.我想的是查询20岁以上用户的所有id,并使用$ in运算符查找地址.

我的问题是,有没有办法把它变成一个查询?有更好的方法来查询吗?(obs:这只是一个例子,我的问题是我无法将地址嵌入用户)

non-relational-database document-based-database mongodb mongodb-query aggregation-framework

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

如何禁用副本集监视器输出

我有一个bash脚本,它试图通过连接到副本集来监视集合中的文档数.

COUNT=`/bin/mongo --quiet --host $REPLICA_SET policy -u myuser -p mypwd --eval 'db.myColl.count()'`
Run Code Online (Sandbox Code Playgroud)

我期待只有一个数字作为输出,但我得到:

Mon Apr 27 13:33:57.716 starting new replica set monitor for replica set xx wit                                                                             h seed of xxx 
Mon Apr 27 13:33:57.719 succes                                                                             sfully connected to seed xx for replica set xx
Mon Apr 27 13:33:57.719 changing hosts to ...  

...

Mon Apr 27 13:33:57.736 [ReplicaSetMonitorWatcher] starting 3043
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何禁用这一堆输出?谢谢.

mongodb

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

Mongodb - Mongoimport错误无效字符

我尝试使用mongoimport导入一个简单的json文件,我得到以下错误

PER-MacBook-Pro:/AJ$ mongoimport --db test --collection samplePM --file /users/AJ/Documents/Development/ETLwork/Dummydata/Penguin_Players.json
2015-06-16T09:53:57.291-0400    connected to: localhost
2015-06-16T09:53:57.293-0400    Failed: error processing document #1: invalid character '\\' looking for beginning of object key string
2015-06-16T09:53:57.293-0400    imported 0 documents
Run Code Online (Sandbox Code Playgroud)

示例json文件如下:

      {  
         "position":"Right Wing",
         "id":8465166,
         "weight":200,
         "height":"6' 0\"",
         "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8465166.jpg",
         "birthplace":"Seria, BRN",
         "age":37,
         "name":"Craig Adams",
         "birthdate":"April 26, 1977",
         "number":27
      },
      {  
         "position":"Right Wing",
         "id":8475761,
         "weight":195,
         "height":"6' 2\"",
         "imageUrl":"http://1.cdn.nhle.com/photos/mugs/8475761.jpg",
         "birthplace":"Gardena, CA, USA",
         "age":23,
         "name":"Beau Bennett",
         "birthdate":"November 27, 1991",
         "number":19
      }
Run Code Online (Sandbox Code Playgroud)

我在这里做错了吗?

mongodb

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

如何反序列化不同类型的集合?

我有一个看起来像这样的JSON提要(我删除了一些这个例子不需要的字段):

{
  "total_count": 2,
  "num_pages": 1,
  "current_page": 1,
  "balance": {
    "amount": "0.00001199",
    "currency": "BTC"
  },
  "transactions": [
    {
      "transaction": {
        "id": "5018f833f8182b129c00002f",
        "created_at": "2012-08-01T02:34:43-07:00",
        "sender": {
          "id": "5011f33df8182b142400000e",
          "name": "User Two",
          "email": "user2@example.com"
        },
        "recipient": {
          "id": "5011f33df8182b142400000a",
          "name": "User One",
          "email": "user1@example.com"
        }
      }
    },
    {
      "transaction": {
        "id": "5018f833f8182b129c00002e",
        "created_at": "2012-08-01T02:36:43-07:00",
        "hsh": "9d6a7d1112c3db9de5315b421a5153d71413f5f752aff75bf504b77df4e646a3",
        "sender": {
          "id": "5011f33df8182b142400000e",
          "name": "User Two",
          "email": "user2@example.com"
        },
        "recipient_address": "37muSN5ZrukVTvyVh3mT5Zc5ew9L9CBare"
      }
    }
 ]
}
Run Code Online (Sandbox Code Playgroud)

有两种类型的交易在这个饲料:有一个内部事务recipient有一个和外部交易hshrecipient_address.

我创建了以下类来容纳这个结构:

UML

因此,我们为所有分页结果( …

.net c# json json.net json-deserialization

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

如何在Spring-MongoDb聚合框架中使用$ cond操作

我有一个聚合管道,其中包含一个这样的项目:

$project: {
  start: {
    $cond: {
      if: {
        $eq: ["$start", "EARLY"]
      },
      then: "$deltastart.start",
      else: "$deltastart.end"
    }
  },...
},...
Run Code Online (Sandbox Code Playgroud)

在mongo shell中工作正常.如何使用Spring-Mongodb中的Aggregation框架来表达这一点?我见过ProjectionOperationBuilder,ExpressionProjectionOperationBuilder类型但不是一个例子如何使用它们...有什么建议吗?

spring mongodb aggregation-framework spring-data-mongodb

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

Mongodb,使用$ lookup进行聚合查询

有两个收藏,标签和人.

标签型号:

{
  en: String,
  sv: String
}
Run Code Online (Sandbox Code Playgroud)

人物模型:

{
  name: String,
  projects: [
    title: String,
    tags: [
      {
        type: Schema.ObjectId,
        ref: 'tag'
      }
    ]
  ]

}
Run Code Online (Sandbox Code Playgroud)

我想查询返回人员模型中使用的所有标签.所有文件.

有点喜欢

var query = mongoose.model('tag').find({...});
Run Code Online (Sandbox Code Playgroud)

或者我应该以某种方式使用聚合方法?

mongoose mongodb mongodb-query aggregation-framework

8
推荐指数
1
解决办法
3万
查看次数