流星 mongo 驱动程序可以处理 $each 和 $position 运算符吗?

2024-04-01

我正在开发一个流星应用程序,并使用最新的流星包。我想重新定位 mongo 文档数组中的项目。为了实现这一目标,我$pull将其从数组中取出,然后$push它在特定的index位置根据MongoDB 文档 https://docs.mongodb.org/v3.0/reference/operator/update/position/.

MyCollection.update({_id: my_doc.id},
        {
          $push:
          {
            my_array:
            {
              $each:[my_item.id],
              $position:index
            }
          }
        }
      )

Meteor/Mongo 抛出以下错误:

更新失败:MongoError:无法规范化查询:BadValue 未知 顶级运算符:$each

我首先实现了这个客户端。我认为由于 minimongo 的限制,它不起作用。

我写了一个方法来处理这个服务器端,但我最终遇到了同样的错误。

这个请求有什么问题,meteor 可以处理 $each 操作符吗?


EDIT:我尝试直接将其插入到 robomongo 中,并且成功了。 Mongo版本,输入时db.version()返回 2.6.7


*编辑2:我没想到,所以我之前没有检查:更新有效,都与$pull$push。但是,即使数据实际上已更新,我仍然收到错误。


*编辑:这是一些示例数据:

{
    "_id" : "oSNrpgAAu8BuznvD6",
    "name" : "tynhjderjye",
    "description" : "",
    "notes" : "",
    "display_notes" : false,
    "keywords" : [
        ""
    ],
    "owner" : "mA5Y7LBCoRyeSDkaG",
    "createdAt" : ISODate("2015-10-27T13:59:06.083Z"),
    "createdBy" : "C3i9oj4eapyttHZj6",
    "contributors" : [
        "C3i9oj4eapyttHZj6"
    ],
    "medias" : [
        "TcFqermNY4y5cjBG3",
        "dbkNN2rxXJXth8urw",
        "jML4JKkRoKxx8sLwu",
        "LEWYsnPrXRSH6MPkX"
    ],
    "modifiedAt" : ISODate("2015-11-17T09:35:50.303Z"),
    "modifiedBy" : "C3i9oj4eapyttHZj6",
    "chunks" : [
        "qCCHKJDbdTLEFR5Yt",
        "ySiM7dcxvduEM2npj",
        "5q46vqrmYttscitiK"
    ],
    "trashed" : ISODate("2015-11-17T09:35:50.303Z")
}

chunks是数组my_array我拉和推的地方my_item.id在该位置index


如果您使用以下命令创建 Meteor Collectionnew Mongo.Collection('col')你得到一个 Minimongo 实例,它不是本机 Node MongoDriver,对吧?

所以有些方法不起作用或不完全支持..比如collection.aggregate

但您可以通过以下方式轻松访问本机驱动程序Col.rawCollection()并直接在本机实例上执行查询。当然,本机实例只能在服务器上访问.

因此,要做你想做的事,你有几种方法,例如,你可以首先获取数组,按照你想要的方式使用它,然后

$set: {my_array: sortedArray }就我个人而言,我更喜欢这种方式,因为您只需要执行一次更新操作而不是两次($pull & $push at $position)

但如果你想以 $push at $position 的方式做到这一点..只需使用本机驱动程序即可

var col = Collection.rawCollection();
var result = Meteor.wrapAsync(col.update.bind(col)(
  /* update query goes here */
);

注意:由于 Meteor 同步风格,您需要 Meteor.wrapAsync,您也可以不使用它。Collection.rawCollection().update(...)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流星 mongo 驱动程序可以处理 $each 和 $position 运算符吗? 的相关文章

随机推荐

  • 如何通过 Telegraf 监控目录的大小

    我们需要监控一个目录的大小 例如InfluxDB的数据目录 以便在Grafana中设置警报 正如这里提到的 如何配置 telegraf 将文件夹大小发送到 influxDB https stackoverflow com q 4427343
  • Dart:pub get 与 pub Upgrade

    根据pub get docs http pub dartlang org doc pub get html之间的主要区别pub get and pub upgrade is 如果锁定文件已存在 则 pub get 使用锁定在其中的依赖项版本
  • setMaxForRoute 在 ThreadSafeClientConnManager 中不起作用

    我一直在尝试使用 Apache HttpClient 4 1 3 实现连接池并且ThreadSafeClientConnManager 当我尝试设置路由的最大连接数时 我遇到了一个问题 基本上我遵循的例子hc apache org http
  • 缺少具体实现“getter Equatable”/道具问题

    我正在使用 flutter 完成许多关于 bloc 的教程 但遇到了一些不一致的情况 我正在使用 Android studio 并使用 Intellij v1 6 0 的插件创建块代码 对于 bloc event 我继续看到类似这样的示例
  • 使用日期时间搜索日志文件

    我正在读取日志文件 并希望选择将搜索限制在特定日期范围内 日志文件中的行采用以下格式May 27 09 33 33 我已经将日志文件每一行中的日期与其余文本分开 我只是希望能够写出这样的声明 if the date falls betwee
  • 转换为未显式实现的接口?

    假设您定义了一些任意接口 public interface IInterface void SomeMethod 假设有一些类恰好有一个匹配的公共接口 即使它们没有 实现IInterface IE public class SomeClas
  • 在 C# 中使用 ImageAttributes 旋转色调

    如何使用 GDI 旋转图像的色调ImageAttributes 并且大概ColorMatrix 请注意 我想旋转色调 而不是对图像进行着色 EDIT 通过旋转色调 我的意思是图像中的每种颜色应该转换为不同的颜色 而不是使整个图像变成一种颜色
  • 如何将抓取的项目放入 Pyqt5 小部件中?

    我正在尝试为 Scrapy 爬虫制作一个简单的 GUI 用户可以按 开始 按钮来运行抓取并在 textBrowser 或其他 qt 小部件 请告知 中查看抓取的结果 我的蜘蛛 import scrapy json class CarSpid
  • 如果元素的位置是绝对的,浏览器的渲染是否会回流?

    如果我有一个具有绝对位置的元素 并且更改其左侧和顶部位置 则会回流到其父子元素吗 如果它自己的孩子不受影响 因为它们也是由左轴和上轴绝对定位的 那么它们又怎么样呢 如果我更改元素的宽度 高度但在父元素及其子元素中不重要 具有绝对位置的对象不
  • 如何在 Typescript 中创建抽象工厂模式?

    我正在尝试在 Typescript 中实现标准抽象工厂模式 但编译器不合作 这是我的代码的简化版本 abstract class Model class User extends Model abstract class ModelFact
  • 如何取消设置全局变量。

    我有一个id一个项目和一个id客户端的会话是以 JSON 格式传递的 php 会话 这些存储在全局变量中id p and id c所以我可以使用这些 id 进行多次插入和更新选择等 当用户选择另一个项目或更改页面时 我需要取消设置这些变量
  • 如何使用正则表达式来忽略包含特定子字符串的字符串?

    我将如何使用负向后查找 或任何其他方法 正则表达式来忽略包含特定子字符串的字符串 我读过之前的两个 stackoverflow 问题 java 正则表达式用于文件过滤 https stackoverflow com questions 36
  • macports PHP5 的 Pear 安装

    我通过 macports 在 opt local macports 的默认位置安装了 PHP5 pear 没有端口文件 如果我从 pear 站点进行标准 pear 安装 则 pear 应该放置在什么目录位置才能与 PHP 一起使用 虽然cu
  • 我如何知道哪个初始化程序是指定的初始化程序?

    我如何知道哪个初始值设定项是任何类的指定初始值设定项 我猜它是需要最多参数的一个 但有时这可能是不正确的 omz的答案可以更坚定地表述 The Documentation for a Framework classwill指定哪个是指定的初
  • C++:从用户输入调用函数

    在Python中 当我有几个根据用户输入调用的不同函数时 我有一个字典 其中用户输入作为键 函数名称作为值 def x y return y def z y return y functions x x z z print function
  • 可以从 CUDD 管理器中删除变量吗?

    谁能告诉我是否可以安全地从 CUDD 中的管理器中删除变量 例如 我通过以下方式注册两个变量v1 Cudd bddNewVar manager and v2 Cudd bddNewVar manager 我可以删除吗v2来自经理 我认为不可
  • 如何使用分隔符连接 PySpark 中的多个列?

    我有一个pyspark Dataframe 我想加入3个专栏 id column 1 column 2 column 3 1 12 34 67 2 45 78 90 3 23 93 56
  • 如何使用 ConstraintLayout 使视图“wrap_content 但不大于”?

    我连续有 3 个视图 标题 版本和图像视图 用作按钮 标题应该是wrap content但遵守以下规则 版本应该是wrap content 位于标题右侧和图像视图左侧 imageview 具有固定大小 位于父级的右上角 问题是 如果标题太大
  • 如何在 Android Studio (Gradle) 中添加 apache commons 集合

    我正在尝试使用 ListUtils 但是当我运行该应用程序时 我收到此错误 Caused by java lang ClassNotFoundException Didn t find class org apache commons co
  • 流星 mongo 驱动程序可以处理 $each 和 $position 运算符吗?

    我正在开发一个流星应用程序 并使用最新的流星包 我想重新定位 mongo 文档数组中的项目 为了实现这一目标 我 pull将其从数组中取出 然后 push它在特定的index位置根据MongoDB 文档 https docs mongodb