用一个更新查询设置多个字段
以下代码应起作用.我本来可以错过的,但是现在我将其作为2个单独的更新语句,并决定在这里询问为什么这行不起作用. $this->db->settings->update(array('_id' => $mongoID), array( '$set' => array('about' => $about), '$set' => array('avatar' => $avatar) ) ); 阅读指南时我是否错过了一些东西,还是只能使用单独的更新语句进行? 解决方案 MongoCollection::update 是更新操作的选项. $this->db->settings->update( array('_id' => $mongoID), array('$set' => array('about' => $about, 'avatar' => $avatar)) );
0 2023-05-29
编程技术问答社区
Mongodb多嵌套数组搜索
我的目的是搜索数据记录userId 1 以下是我的数据 { "_id" : 2, "name" : "test", "data" :[{"_id" : "1","file" : "nic", "userid" : [1,2 ]}, {"_id" : "2","file" : "nic1","userid" : [1 ] }, {"_id" : 3,"file" : "nick2","userid" : [1,2 ]} ]}, { "_id" : 3, "name" : "test", "data" : [{"_id" : "1","file" : "nic","userid" : [1,2 ] }, {"_id" : "2","file" : "nic1", "userid" : [3,2 ] } ]} out put应该是 { "_id" : 2,
0 2023-05-28
编程技术问答社区
如何在mongodb中查找数组的最后一项?
我想找到文档,其中数组中的最后一个元素等于某些值. 数组元素可以通过特定数组位置访问: // i.e. comments[0].by == "Abe" db.example.find( { "comments.0.by" : "Abe" } ) 但是如何使用最后一项作为标准搜索? 即. db.example.find( { "comments.last.by" : "Abe" } ) 顺便说一句,我正在使用php 解决方案 我只是在做: db.products.find({'statusHistory.status':'AVAILABLE'},{'statusHistory': {$slice: -1}}) 这使我得到了products,该数组中的最后一个statusHistory包含属性status='AVAILABLE'. 其他解决方案 我知道这个问题是旧的,但是在回答类似的新问题之后,我在Google上找到了它.所以我认为这应该得到相同
0 2023-05-28
编程技术问答社区
mongodb中匹配的OR条件百分比
我以下格式获得了数据. { "_id" : ObjectId("534fd4662d22a05415000000"), "product_id" : "50862224", "ean" : "8808992479390", "brand" : "LG", "model" : "37LH3000", "features" : [{ { "key" : "Screen Format", "value" : "16:9", }, { "key" : "DVD Player / Recorder", "value" : "No", }, "key" : "Weight in kg", "value" : "12.6", } ... so on ] } 我需要根据功能匹配的百分比将一种产品的功能与其他产品的功能进行比较,并将结果分为单独的类
2 2023-05-27
编程技术问答社区
mongodb get_id作为查找查询中的字符串
在这里,我创建了一个带有单个文档的集合 db.getCollection('example').insert({"example":1}); 我试图使用投影,然后恢复了_id. db.getCollection('example').find({"example":1},{"_id":1}); { "_id" : ObjectId("562a6300bbc948a4315f3abc") } 但是,我需要以下输出,如下所示. id而不是_id objectid(" 562A6300BBC948A4315F3ABC")vs" 562A6300BBC948A4315F3ABC" { "id" : "562a6300bbc948a4315f3abc" } 尽管我可以在App Server上(基于PHP)上处理#1和#2以获取所需的OUPUT,但我正在寻找是否有一种方法可以从Mongo本身查询时获得预期的结果 解决方案 mongodb
0 2023-05-26
编程技术问答社区
为排序的分页计算给定记录的跳过值
我正在尝试使用PHP驱动程序计算Mongo DB集合中给定记录的跳过值.因此,请记录给定的记录,找出整个集合中该记录的索引.这可能吗? 目前,我正在选择所有记录,并在结果数组中手动​​执行索引. 解决方案 这称为"正向分页",这是一个概念,您可以在使用"排序"结果时通过"向前"方向"有效地"页面. 包括JavaScript逻辑(因为它在外壳中起作用),但不难翻译. 一般的概念: { "_id": 1, "a": 3 }, { "_id": 2, "a": 3 }, { "_id": 3, "a": 3 }, { "_id": 4, "a": 2 }, { "_id": 5, "a": 1 }, { "_id": 6, "a": 0 } 将这些文档(出于说明)作为我们想要"页面"的结果的一个示例. . 首先您要做这样的事情: var lastVal = null, lastSeen = []; db.collection.find
0 2023-05-26
编程技术问答社区
MongoDB重复文档,即使添加了唯一密钥
我创建了一个集合,并添加了一个唯一的密钥 db.user_services.createIndex({"uid":1 , "sid": 1},{unique:true,dropDups: true}) 该系列看起来像这样 " user_services" { "_id" : ObjectId("55068b35f791c7f81000002d"), "uid" : 15, "sid" : 1, "rate" : 5 }, { "_id" : ObjectId("55068b35f791c7f81000002f"), "uid" : 15, "sid" : 1, "rate" : 4 } 问题: 正在使用PHP驱动程序插入相同的 uid和sid 的文档,并且正在插入. 我想要的 在Mongo Shell上:在UID上添加唯一键,而SID上没有相同的UID和SID的重复文档. 在PHP侧:具有重复的密钥更新速率上的MySQL "插入(
2 2023-05-26
编程技术问答社区
我无法在phalcon的集合中查询到类似%的信息
我将phalcon与mongo db一起使用.模型是收集. 我想用查找 SELECT * FROM Users WHERE Username LIKE '%TienNguyen%' 我在mongo db中看到查询 b.users.find( { Username: /TienNguyen/ } ) 但在集合中.我如何编码. 我尝试了Users::find([['Username' => "/TienNguyen/"]]); 它不起作用. 请帮助我 解决方案 如上所述,在字符串开始时未锚定的Regex搜索可能非常昂贵,因为它们需要全表扫描.根据您的用例,您可能会考虑使用 text Index 而不是.它提供了对案例不敏感的非锚固搜索的支持. . 其他解决方案 是的,您想要的是 $ regex 运算符形式,而不是将regex作为字符串传递.当该表格在外壳中起作用时,大多数驱动程序对操作员语法更满意: Users::find(
0 2023-05-25
编程技术问答社区
如何用Perl对mongodb的多个字段进行排序?
如何使用perl中的mongodb多种多样? 我当前的方法看起来像这样: my $sort = {"is_instock" => -1, "ua" => 1}; my $resultSet = $collection ->find({moderated => 1, markers => {'$all'=>$obj->{markers}}}) ->sort($sort) ->limit(25); @{$result} = $resultSet->all; 但是,我的数组被一个字段(UA)排序.我做错了什么? 解决方案 这里的基本问题是,默认情况下,perl中的"哈希"按"键"排序.为了获得"插入顺序",您需要使用 Tie::IxHash 如下: use Tie::IxHash; my %sort; tie ( %sort, 'Tie::IxHash' ); my $sort = \%sort; $sort = { "is_instoc
2 2023-05-24
编程技术问答社区
性能调整MongoDB查询/更新?
因此,我有一个mongoDB实例,我试图在一个集合中使用来自另一个集合的数据更新数据.这两个集合是participants,带有约180k的文档,questions带有约95k文档. participants中的文档通常看起来像这样: { "_id" : ObjectId("52f90b8bbab16dd8594b82b4"), "answers" : [ { "_id" : ObjectId("52f90b8bbab16dd8594b82b9"), "question_id" : 2081, "sub_id" : null, "values" : [ "Yes" ] }, { "_id" : ObjectId("52f90b8bbab16
0 2023-05-24
编程技术问答社区
MongoDB与MySQL的性能对比--简单查询
我正在对MONGODB相对于MySQL进行比较,并将MySQL数据导入到MongoDB集合(> 500000记录)中. 该系列看起来像这样: { "_id" : ObjectId(""), "idSequence" : , "TestNumber" : , "TestName" : "", "S1" : , "S2" : , "Slottxt" : "", "DUT" : , "DUTtxt" : "", "DUTver" : "", "Voltage" : , "Temperature" : , "Rate" : , "ParamX" : "", "ParamY" : "", "Result" : , "TimeStart" : new Date(""), "TimeStop" : new Date(""), "Operator"
4 2023-05-24
编程技术问答社区
Mongodb计数与查询的性能很差
计算收藏集中的记录数,即使在索引字段上也与查询相匹配的记录数量花费太多时间.例如,假设一个集合包含10000个记录,并且该集合的创建范围上有一个索引.从收藏中获取最后十张记录要比计算最后一天创建的记录数的速度要快.它需要超过5秒的时间,有时甚至最多70秒才能返回计数查询的结果.您是否知道如何解决此问题,解决此问题的最佳方法是什么? 顺便说一句,我们还使用了morphia,我们看到通过morphia计数甚至更慢,因此,对于计数查询,我们将Morphia查询转换为Java驱动程序查询.有人遇到过类似情况吗?为什么吗啡响应速度较慢?这仅是用于计数查询而发生的,还是与仅使用Java驱动程序相比,这通常是慢的吗? 帮助,建议或工作人员将不胜感激,我们的应用程序在很大程度上依赖计数查询,而系统的缓慢现在对我们来说真的很烦人. 预先感谢. 解决方案 虽然这可能不是最终答案,但让我们开始进一步发展: 您的索引应该始终适合RAM,否则您的性能将非常糟糕. 要评估使用多
4 2023-05-24
编程技术问答社区
为什么$ nin比$ in慢了,mongodb
我的收藏品带有500万文档,带有正确的索引. 超快: {'tech': {'$in': ['Wordpress', 'wordpress', 'WORDPRESS']}} 超级慢.. {'tech': {'$nin': ['Wordpress', 'wordpress', 'WORDPRESS']}} 解决方案 以下解释仅适用于3.2 之前的mongo版本 mongo v3.2具有各种存储引擎的变化,可改善此问题的性能. 现在$nin哈希一个重要的质量,这不是选择性查询,首先让我们了解什么选择性表示: 选择性是查询使用索引缩小结果的能力.有效的索引更具选择性,允许MongoDB使用索引来完成与查询有关的大部分工作. 现在他们甚至说自己: 例如,不平等运算符$ nin和$ ne不是很有选择性,因为它们通常与索引的很大一部分匹配.结果,在许多情况下,带有索引的$ nin或$ ne查询可能不会比必须扫描集合中的所有文档的$ nin或$ ne查
0 2023-05-24
编程技术问答社区
在单个Mongodb查询中查找和计算
我的文档看起来像这样. { "_id" : ObjectId("572c4bffd073dd581edae045"), "name" : "What's New in PHP 7", "description" : "PHP 7 is the first new major version number of PHP since 2004. This course shows what's new, and what's changed.", "difficulty_level" : "Beginner", "type" : "Normal", "tagged_skills" : [ { "_id" : "5714e894e09a0f7d804b2254", "name" : "PHP" } ], "created_at" : 1462520831.649, "updated_at" : 1468233074.243 }
0 2023-05-24
编程技术问答社区
如何在mongodb中搜索逗号分隔的数据
我有具有不同字段的电影数据库.流派字段包含一个逗号分隔的字符串,例如: {genre: 'Action, Adventure, Sci-Fi'} 我知道我可以使用正则表达式查找匹配项.我也尝试了: {'genre': {'$in': genre}} 问题是运行时间.返回查询结果需要大量时间.该数据库有大约300K文档,我对"流派"字段进行了正常的索引. 解决方案 会说使用 例如,我已经为foo集合创建了一些示例文档: db.foo.insert([ {genre: 'Action, Adventure, Sci-Fi'}, {genre: 'Thriller, Romantic'}, {genre: 'Comedy, Action'} ]) 以下地图/减少操作将产生您可以从中应用性能查询的集合: map = function() { var array = this.genre.split(/\s*,\s*/);
2 2023-05-23
编程技术问答社区
MongoDB查找性能:单一复合索引VS两个单字段索引
我正在寻找有关在MongoDB 3.4中使用哪种索引策略的建议. 让我们假设我们有一个 people 具有以下形状的文档集合: { _id: 10, name: "Bob", age: 32, profession: "Hacker" } 让我们想象一下要查询集合的Web API已公开,并且唯一的可能过滤器是 name 或 age age . . 对API的示例调用将是:http://myAwesomeWebSite/people?name="Bob"&age=25 这样的调用将在以下查询中翻译:db.people.find({name: "Bob", age: 25}). 要更好地阐明我们的场景,请考虑: 字段名称已经在我们的文档中,我们已经在该字段上有一个索引 由于我们应用程序的一些新功能,我们将添加新字段 age 仅通过上述Web API访问数据库,最重要的要求是公开超级快速的Web API 对Web API
6 2023-05-23
编程技术问答社区
如何在mongodb中找到不使用索引或缓慢的查询
是否有一种方法可以在MongoDB中找到不使用索引或慢速的查询?在MySQL中,可以在配置文件中使用以下设置: log-queries-not-using-indexes = 1 log_slow_queries = /tmp/slowmysql.log 解决方案 MongoDB中的等效方法是使用在启用了数据库的分析后,慢速操作将写入system.profile上限集合(默认情况下为1MB的大小为1MB).您可以使用调整慢速操作的阈值(默认为100ms)(默认为100ms) slowms参数. 其他解决方案 首先,您必须设置分析,并指定所需的日志级别.这3个选项是: 0-登录 1-日志慢查询 2-日志所有查询 您通过使用--profile选项运行mongod deamon来做到这一点: mongod --profile 2 --slowms 20 这样,日志将写入system.profile集合,您可以在其上执行以下查询: 在某些集合
0 2023-05-23
编程技术问答社区
MongoDB WinningPlan IDHACK
对于以下查询: db.restaurants.find({"_id" : ObjectId("5aabce4f827d70999ae5f5f7")}).explain() 我正在获取以下查询计划: /* 1 */ { "queryPlanner" : { "plannerVersion" : 1, "namespace" : "test.restaurants", "indexFilterSet" : false, "parsedQuery" : { "_id" : { "$eq" : ObjectId("5aabce4f827d70999ae5f5f7") } }, "winningPlan" : { "stage" : "IDHACK" }, "rejectedPlans" : [] }, "serverInfo" : { "
8 2023-05-22
编程技术问答社区
如何从MongoDB的多个集合中获取数据?
如何使用一个响应使用一个响应? 员工scheema: const mongoose = require("mongoose"); const employeeSchema = new mongoose.Schema( { profilePic: { type: String, }, employeeID: { type: String, required: true, }, employeeFirstName: { type: String, required: true, }, employeeLastName: { type: String, required: true, }, birthday: { type: String, }, streetNo: { type:
0 2023-05-22
编程技术问答社区