mongodb对话系统

2024-06-27

我正在实施一个verymongodb 上的简单对话系统。

这个想法应该是,当我打开一个 convo 时,它应该显示发送和接收的消息。到目前为止一切正常,并且应该非常容易,通过使用像这样的伪代码这样的简单查询:

(from "my_id" AND to "friend_id") OR (from "friend_id" AND to "my_id")

这应该非常简单明了,但是使用 mongodb 进行查询对我来说看起来非常复杂(我来自 mysql)。

我正在尝试这个,但它根本不起作用,并且无法找出错误在哪里。

$cursor =$collection->find
            (
                array('$or' =>
                    array('$and' => array("from"=>"$profile", "to"=>"$loggeduser")),
                    array('$and' => array("to"=>"$profile", "from"=>"$loggeduser"))
                )
            )->limit(50)->sort(array('date' => -1));

这不会返回任何内容...错误在哪里?

提前致谢。


查看此页面,了解如何执行高级 MongoDB 查询:http://www.mongodb.org/display/DOCS/Advanced+Queries http://www.mongodb.org/display/DOCS/Advanced+Queries

您可以使用以下组合$and and $in运营商来获取您需要的东西。使用 mongo shell,您的查询将如下所示:

db.yourCollectionName.find({$and: {from: {$in: ["toUser", "loggedOnUser"]}}, {to: {$in: ["toUser", "loggedOnUser"]}}})

我相信这也可以给你等价的:

db.yourCollectionName.find({$and: {$or: [{from: "toUser"}, {to: "toUser"}]}}, {$or: [{from: "loggedOnUser"}, {to: "loggedOnUser"}]}}})

接下来的问题是将上面的内容转换为您正在使用的语言/DSL,并按日期排序。

在您的代码中,您不需要($and => array())包装您要查找的每个对象。删除它们,所以它看起来像这样:

$cursor = $collection->find(
    array('$or' => 
        array(
            array("from"=>"$profile", "to"=>"$loggeduser"),
            array("to"=>"$profile", "from"=>"$loggeduser")
        )
    )
) ->limit(50)->sort(array('date' => -1));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongodb对话系统 的相关文章

  • 无法加载动态库“php_wincache.dll”?

    因为我已经使用 ASP NET 所以我决定在 IIS 上使用 PHP 我使用 Wep PI 安装它 但是当我尝试安装 Composer 时 他失败并出现 PHP 设置错误 我尝试将 php ini 中的 extension dir 更改为绝
  • 使用php从图像中获取第一个像素

    我正在尝试获取图像的第一个像素 最好是最左上角或最右上角的一个像素 我看到了这个问题 它有最接近我的问题的答案 获取图像颜色 https stackoverflow com questions 1746530 get image color
  • PHP CLI 有几秒钟的延迟

    当我在 CLI 模式下运行 PHP 时 CentOS 6 5 下的 PHP 5 6 6 使用 VirtualBox 作为虚拟机运行 即使我只检查版本并且禁用 php ini 文件 也会有几秒钟的延迟 time php n v PHP 5 6
  • 我的 zend 应用程序无法在 YouTube 上上传文件

    我正在使用以下代码在 YouTube 上上传小型和大型视频 该代码在本地主机上正常工作 但是当我在服务器上运行它并上传相同的视频时 它会上传所有小文件 但不会上传大文件 上传完成后 YouTube 对于大尺寸文件显示以下错误 失败 无法转换
  • 为什么php邮件功能在xampp中不起作用

    我在使用 xampp 时遇到问题 我想检查邮件表格 但看不到任何结果 我像本网站中的教程一样配置 Mercury 32 http system66 blogspot com 2010 01 how to send mail from loc
  • XMLHttpRequest() 并输出 csv 文件

    我可以通过向新窗口发出 html 表单 POST 并使用 PHP 响应来成功生成 csv 文件 header Content type text csv header Content Disposition attachment filen
  • WordPress 中的随机永久链接键

    我想为 WordPress 中的每个新帖子都有一个自定义永久链接 例如 http mysite com x5Kvy6 http mysite com x5Kvy6 如 bit ly 我尝试了这个小脚本 但它只在永久链接的帖子标题中添加了 5
  • 如何在会话过期后自动更新数据库而不刷新我的页面

    您需要刷新或单击该代码 然后它才会转到索引页面 并且在会话过期后更新数据库之前 如何让会话过期后自动更新数据库 使用户活跃度为0 而无需刷新或点击页面 idletime 3600 after 1hr the user gets logged
  • 防止我的 PHP 网络爬虫停止运行

    我正在使用 PHPCrawl 类并添加了一些 DOMDocument 和 DOMXpath 代码来从网页中获取特定数据 但是脚本在接近爬行整个网站之前就停止了 我已将 set time limit 设置为 100000000 因此这不应该成
  • 如何在 Linux 上的 php 中启用 --enable-soap?

    这就是问题所在 我在 Apache 上安装了 PHP 5 2 9 但无法升级 PHP 有没有办法在 PHP 5 2 9 中启用 SOAP PHP 手册中说 要启用 SOAP 支持 请使用 enable soap 配置 PHP 这根本没有帮助
  • 如何将parameters.yml中的Symfony参数注入Behat 3配置中?

    我需要设置base url for Behat MinkExtension 这是我的一部分应用程序 配置 parameters yml parameters behat base url http my app local app test
  • 数据库记录的多级菜单

    我需要一些有关 PHP 的帮助 我有一个工作正常的多级 css 菜单 但现在我想根据数据库中的记录生成 菜单代码 div ul class dropdown li a href Link 1 a li li a href Link 2 a
  • 将我的 JSON 字符串格式化为 PHP 中的
      有序列表

    我正在为一个宠物项目开发一个简单的 CMS 我目前有一个 JSON 字符串 其中包含菜单结构的页面 ID 和父页面 ID 的列表 我现在想将此字符串转换为嵌套或分层列表 有序列表 我尝试过循环查找 但似乎最终得到了过于复杂的子类范围 我正在
  • Laravel 4 类如何检测它是在 Artisan 任务中运行还是在浏览器请求中运行?

    我有一些应用程序启动代码 需要知道它当前是在 artisan 任务中运行还是在浏览器请求中调用 我如何在 Laravel 4 中检测到这一点 这是最好的方法 if App runningInConsole echo Running in a
  • 在 Woocommerce 结帐页面上移动亚马逊按钮

    我需要移动 Woocommerce 结账页面上的 Amazon Pay 消息 按钮 我们正在使用Woocommerce 的亚马逊支付 https woocommerce com products pay with amazon 当我查看插件
  • 在 PHP 中,如何检查函数是否存在?

    如何检查该功能是否可用my functionPHP 中已经存在 Using function exists http php net function exists if function exists my function my fun
  • 一系列 unicode 点的正则表达式 PHP

    我正在尝试从字符串中删除所有字符 除了 字母数字字符 美元符号 下划线 代码点之间的 Unicode 字符U 0080 and U FFFF 通过这样做 我得到了前三个条件 preg replace a zA Z d foo 我如何去满足第
  • 无法在 PHP 中接收 JSON POST 请求

    我正在将 JSON 对象从 Java 传递到 PHP 我正在使用 jdk 1 8 和 WAMPserver 下面是Java代码 import java io IOException import org apache http client
  • 如何在 Laravel 5.3 中使用标头参数调用 SOAP wsdl?

    I use artisaninweb laravel soap包来运行 SOAP wsdl 文件 为了解析 WSDL 文件 我需要将其与标头参数一起调用 所以换句话来说 首先我需要设置标头参数 然后将其与此参数一起调用 在我的 larave
  • PHP:系统时区设置错误

    我尝试在 MAMP 下的终端中使用 PHP 但出现与系统时区设置相关的错误 我该如何修复这个错误 应用程序 MAMP bin php5 bin php 回声 php PHP 严格标准 PHP 启动 它 依赖系统是不安全的 时区设置 请使用

随机推荐

  • 无法以静默方式或使用 msal-browser 通过重定向获取令牌

    我正在尝试开发一个 VueJS 单页应用程序 将您登录到 AAD 以便我可以获得访问令牌来调用各种 API 例如 Graph 用户登录后 您必须获取令牌 有两种方法可以执行此操作 静默 如果失败 则使用重定向体验 但是 我无法使用这两种方法
  • 在 symfony2 中为特定控制器设置 max_execution_time

    Using ini set 我可以扩展最大执行时间一个脚本的 在Symfony2 我可以添加ini set to web app php and web app dev php将增加的执行时间应用于所有控制器 但在这种情况下 我只想扩展最大
  • 如何在Jquery数据表中选择一行

    我在用数据表 http datatables net 在我的应用程序中 每当用户单击任何行时 我想突出显示它并从所选行中选择一些值 oTableTools sRowSelect single fnRowSelected function n
  • 为什么 localInit Func 在 Parallel.ForEach 中每个线程被调用多次

    我正在编写一些代码来处理大量数据 我认为让 Parallel ForEach 为它创建的每个线程创建一个文件会很有用 这样输出就不需要同步 至少对我而言 它看起来像这样 Parallel ForEach vals new ParallelO
  • RestSharp反序列化JSON内容(代表一个对象包含字节数组)错误

    Client端收到正式的JSON内容 Id 1 2 3 Size 56 但在反序列化字节数组时出现错误 1 下面的语句出现错误 IRestResponse
  • 如何在每个批处理脚本运行后清除变量?

    看来 由于我使用 SET 在批处理脚本中声明变量 如果我在 cmd 中运行多次 变量值将持续存在 除非我显式重置它们 我是否必须使用 setlocal 和 endlocal 来确保一次运行中的变量不会在不关闭 CMD 的情况下持续到另一次运
  • Django - 在处理端点请求之前验证 AWS Cognito 令牌是否有效

    因此 我使用下面的代码来检查 AWS Cognito 令牌 我显然不想将这 6 行代码添加到每个端点 另外 我不知道这是否是验证我正在做的所有事情的正确方法 即期望令牌的格式为 解析它并仅解码 JWT 令牌部分 如何对每个请求附带的 AWS
  • 如何按键按字母顺序对 Ruby 哈希进行排序

    我正在尝试按键按字母顺序对哈希进行排序 但如果不创建自己的排序类 我似乎无法找到一种方法来做到这一点 我发现下面的代码可以按值排序 如果它是整数 我正在尝试修改它 但没有任何运气 temp ninjas 36 temp pirates 12
  • 如何使用箭头键在 JPanel 中移动对象

    我正在尝试使用 Windowbuilder 创建一个小程序 它只需在 JPanel 中绘制一个红色矩形 称为 car1 然后按箭头键移动它 为此 我将与箭头关联的一个方法来更改 x 位置 调用重绘方法 但矩形根本不移动 因此我可能会用 Ke
  • AppHarbor 一步构建以及如何部署我的数据库[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我终于达到了我的解决方案完成构建步骤
  • 对静态库中定义的函数的“未定义引用”

    我正在尝试构建一个在应用程序中使用的库 我如下构建了库 当我编译应用程序时 出现以下错误 我已经做了以下事情 I use gcc version 4 6 3 Ubuntu Linaro 4 6 3 1ubuntu5 在从应用程序调用的库中
  • 访问查询——一个字段是否包含另一字段的值

    我正在尝试使用查询将表范围缩小到仅字段 全名 包含字段 名字 中的值的行 例如 如果某行的 全名 中包含 Blake Johnson 名字 中包含 John 则该行将被包含在内 但如果 全名 有 Garry Sways 并且 名字 有 Sw
  • HBase中删除多行的有效方法

    有没有一种有效的方法可以删除 HBase 中的多行 或者我的用例是否不适合 HBase 有一个表称为 图表 其中包含图表中的项目 行键的格式如下 chart date reversed ranked attribute value reve
  • 如何在 Perl 中找到普通文本和 JSON 编码文本之间的差异?

    我用过JSON 任意 http search cpan org dist JSON Any在我的程序中在客户端和服务器之间传输哈希值 我遇到一个问题 我想知道文本 客户端发送的 是普通文本还是 JSON 编码文本 谁能告诉我如何找到 未经检
  • 身份验证后将用户重定向到上一页(yii2)

    我有主控制器 其他控制器都是从主控制器继承的 代码是这样的 public function init this gt on beforeAction function event if Yii app gt getUser gt isGue
  • C# 错误 CS0201:只能将赋值、调用、递增、递减和新对象表达式用作语句

    这是我收到错误的行 activeType typeof Reticle 以下是如何Reticle类已定义 有些属性和方法可能没有多大意义 但我认为类的定义应该是关键问题 public class Reticle Shape region F
  • window.onbeforeunload 触发时如何检测链接是否被点击?

    我正确触发了 window onbeforeunload 它显示一个确认框 以确保用户知道他们正在浏览 关闭 窗口 并且任何未保存的工作都将被删除 我有一个独特的情况 如果用户通过单击链接离开页面 我不希望触发此操作 但我不知道如何检测是否
  • NIVO SLIDER - 将幻灯片设为链接?

    是否可以在 NIVO SLIDER 中将幻灯片设为链接 我在 IE 所有版本中遇到链接问题 其他浏览器工作正常 通过添加解决 background color fff filter alpha opacity 0 other than IE
  • 在Delphi/Lazarus中设置提示窗口(THintWindow)的大小

    我正在尝试在 Lazarus 中进行自定义提示 到目前为止 我已经动态加载了提示中的文本 并自定义了字体 字体大小和字体颜色 我想限制提示窗口的宽度 有任何想法吗 这是我的代码 type TExHint class THintWindow
  • mongodb对话系统

    我正在实施一个verymongodb 上的简单对话系统 这个想法应该是 当我打开一个 convo 时 它应该显示发送和接收的消息 到目前为止一切正常 并且应该非常容易 通过使用像这样的伪代码这样的简单查询 from my id AND to