Tag: mongodb query

addToSet相当于包含子文档的数组

我有一个userSchema包含一个id和一个朋友的数组。 朋友数组实际上是一个包含id,gender和name的另一个模式的数组,因此是一个SubDocuments数组。 var attributesSchema = new Schema({ id: String, gender: String, name: String }) var userSchema = new Schema({ id: { type: String, unique: true, required: true }, Friends: [attributes] }); 之前,我曾经有Friends等于一个String数组。 在这种情况下, AddToSet工作,因为除非具有不同的string值,否则不会在Friends数组中添加内容。 但是,不幸的是,对于子文档,addToSet不能确定是否有重复。 我在不复制子文档的尝试如下: User.update({ id: req.body.userId }, { $addToSet: { Friends: { id: req.body.friendId, gender: req.body.gender, name: req.body.name } } }); 显然,这是行不通的,我正在寻找一种方法来添加Friends数组中的独特的子文档。

如何在帕格文件中显示数据库中的“字段”的值?

我在Node.js和Pug使用MongoDBClient 。 我想在我的数据库中获得所有的比萨店名称。 因此,我写了这样一行: collection.find({cook:'Pizza'})来select所有的比萨店,并且存在“name”属性。 但是find返回一个游标,所以我不能直接使用它的返回值: var array_pizzerias_names = collection.find({cook:'Pizza'}).get('name') 。 (注意:我知道函数get不存在)。 我怎么能这样做? 在我的帕格文件中,我写了这几行: – for(var i = 0; i < array_pizzerias_names.length; i++) { p=array_pizzerias_names[i].name – }

在嵌套数组中search多个值

我有以下集合: { _id: 1, docs: [{ name: file1, labels: [label1, label2, label3, label4] },{ name: file2, labels: [label3, label4] },{ name: file3, labels: [label1, label3, label4] }] } 当用户search标签时,我需要获取所有包含这些标签的文档。 所以如果用户search“label1”和“label3”,我需要得到“file1”和“file3”。 目前我有以下代码: var collection = db.collection(req.user.username); collection.aggregate([ // Unwind each array { "$unwind": "$docs" }, { "$unwind": "$docs.labels" }, // Filter just the matching elements { […]

想在mongobd node.JS中通过_id得到参考集合的对象

我想通过引用id集合来获取特定logging的所有细节。 { "_id" : ObjectId("586c8bf63ef8480af89e94ca"), "createdDate" : ISODate("2017-01-04T05:45:26.945Z"), "branch" : { "$ref" : "branchmst", "$id" : "5864ac80fa769f09a4881791", "$db" : "eviral" }, "__v" : 0 } 这是我的collectionslogging。 我需要所有来自“branchmst”集合的详细信息,其中“_id”是“5864ac80fa769f09a4881791”。

可能? $添加数组的值与对象总值进行比较

mongodb native for node.js(驱动程序版本是2.2.4和MongoDB shell版本:3.2.9) 我的collections有这样的对象: {x:[{v:0.002},{v:0.00002}],t:0.00202} //<this one has the full total in its values {x:[{v:0.002},{v:0.002}],t:0.00202} {x:[{v:0.002},{v:0.002}],t:0.3} (这里显示没有他们的对象id) 我不确定如何将所有xv加起来,只返回xv总和大于或等于对象t的对象 aggregate({"t":{"$gte":{"$add":["xv"]}}}) 返回每一个对象,我没有任何其他的想法阅读文档的语法的顺序。 mongodb甚至可以在查询中做到这一点?

mongoose复杂的查询

使用mongoose。 Schema看起来类似于这个: { "name" : String, "start" : Date, "stop" : Date } 我试图做的是build立一个查询,(“与”): “name”==值 “开始” – 不存在或“开始”的价值 “停止” – 不存在或“停止”lte值 另一方面,启动和停止可以通过,或者不能通过(其中任何一个)。 我所有的尝试,而完成了某种Mongo错误:)所以要求一些帮助。 问候。

如何从mapReduce mongoose中的关键字获得近似值?

我在MongoDB中有一些文件,例如: { "_id" : ObjectId("587f41ffb5ffa43ec25aa075"), "IP" : "113.183.149.127", "Product_Version" : "CMC_2.0", "Product_ID" : "HHFFHJRLAUHOZDBM1YWY291NM0DD7J40", "OS" : "Microsoft_Window_7", "virus" : "Adware:W32/Superfish", "Time" : ISODate("2017-01-18T10:22:55.356Z"), "city_name" : "", "location" : { "latitude" : 0.0, "longitude" : 0.0 } } { "_id" : ObjectId("587f41ffb5ffa43ec25aa078"), "IP" : "27.76.109.254", "Product_Version" : "CMC_2.0", "Product_ID" : "UCOV8JY5YHKQ2B0HPCC0IM1S9T0ICWL7", "OS" : "Microsoft_Window_7", "virus" : […]

使用switch case更新集合中的多个文档

我在我的NodeJS应用程序中使用MongoDB本地驱动程序。 我在我的数据库中有一个需要更新的shifts集合。 在我的class次集合中的示例文档 { "_id" : ObjectId("588425105560bd2ba0065fa4"), "from" : ISODate("2017-01-23T03:20:00.000Z"), "to" : ISODate("2017-01-23T06:20:00.000Z"), "jobId" : ObjectId("586efda790541421b0432897"), "hourlyRate" : 15 } { "_id" : ObjectId("588425105560bd2ba0065fa5"), "from" : ISODate("2017-01-25T03:20:00.000Z"), "to" : ISODate("2017-01-25T06:20:00.000Z"), "jobId" : ObjectId("586efda790541421b0432897"), "hourlyRate" : 15 } 我需要做的是以下 – 更新符合条件的所有文档的hourlyRate : 匹配jobId(很简单) 设置hourlyRate = 20如果from是Weekday 设置hourlyRate = 25如果from星期六开始 设置hourlyRate = 30如果from星期天开始 我想尽可能在​​单个查询中完成。 我的解决scheme迄今为止 使用开关大小写,并使用date聚合函数中的$dayOfWeek确定datetypes。 但是,我无法将交换机与updateMany结合使用。 […]

计算Mongo中引用的对象的数量

给定两个集合,如: users: name posts: title user_id 如何有效地查询超过5个post的用户? 我可以使用$lookup进行聚合,但是对于大型数据集来说需要很长时间。 另一个select是维护users的“postCount”,但我想避免必须保持这一点。 我在节点上使用Mongoose。

如何返回与隐私值相关的特定对象值?

我有这个mongoose模型: var user = new Schema({ email : {type: String}, firstName: {type: String}, lastName: {type: String}, username: {type:String}, password: {type:String}, privacy : { displayEmail: {type: Boolean, default: true}, displayUsername: {type:Boolean: default: true}, displayfirstName: {type:Boolean: default: true}, displaylastName: {type:Boolean: default: true} }) 假设用户将displayLastName abd displayLastName的值设置为false 。 然后,我有一个简单的GET请求,返回一个json对象与所有用户的细节。 我如何查询mongo只返回隐私对象中的true的字段? 如果displayfirstName为true,则返回firstName值。 更新 var user = new Schema({ email […]