小编Gab*_*íaz的帖子

Golang mongodb mgo driver Upsert/UpsertId文档

MongoDB的文件说:

如果参数仅包含更新运算符表达式,则参数和参数的字段和值.此更新根据参数中的等于子句创建基本文档,然后应用参数中的更新表达式.

并且mgo文档说:

Upsert查找与提供的选择器文档匹配的单个文档,并根据更新文档对其进行修改.如果找不到与选择器匹配的文档,则将更新文档应用于选择器文档,并将结果插入到集合中.

但如果我像这样做一个upsert:

session.UpsertId(data.Code, data)
Run Code Online (Sandbox Code Playgroud)

我最终得到一个条目,它具有由mongodb自动生成的ObjectID,而不是data.Code.

这意味着UpsertId期望使用更新运算符格式化数据,并且您不能使用任意结构?或者我在这里失踪了什么?

钯.Mongo 2.4.9 mgo v2 golang go version devel + f613443bb13a

编辑:

这是我的意思的样本,使用Neil Lunn的示例代码:

package main

import (
  "fmt"
  "gopkg.in/mgo.v2"
  // "gopkg.in/mgo.v2/bson"
)

type Person struct {
  Code string
  Name  string
}

func main() {
  session, err := mgo.Dial("admin:admin@localhost");

  if err != nil {
        fmt.Println("Error: ", err)
        return
    // panic(err)
  }

  defer session.Close()

  session.SetMode(mgo.Monotonic, true)

  c := session.DB("test").C("people")

  var p = Person{
    Code: "1234",
    Name: "Bill",
  }

  _, …
Run Code Online (Sandbox Code Playgroud)

go mongodb mgo

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

AngularFire有时不会更新Firebase

下面的控制器使用表格和表格提供视图.该表的相关部分是:

<tr ng-repeat="obj in tab.col | filter:filterObj" ng-click="select(obj)" ng-class="isSelected(obj)">

如果单击一行,表单将显示obj的详细信息(其模型为tab.obj),您可以对其进行编辑.当用户修改表单字段中的obj时,表会适当地获取更新,但firebase不会获得任何更新,而是添加新对象(这是通过array.push(obj)完成的).

define(['app'], function(app) {
app.controller('LinksCtrl',['$scope', '$filter', '$http','angularFire','angularFireAuth', function($scope,$filter,$http, angularFire, angularFireAuth) {
$scope.links = {};
$scope.tabs = [];

var url = "https://<url>.firebaseio.com/links";
angularFireAuth.initialize(url, {scope: $scope, name: "user", path: "/"});
var promise = angularFire(url, $scope, 'links', {})

$scope.select = function (item) {
  for(i in $scope.tabs) {
    var tab = $scope.tabs[i];
    if (tab.active) {
      tab.obj = item;
      if (tab.obj.selected) {
        tab.obj.selected = ! tab.obj.selected;
      } else {
        tab.obj.selected = true;
        // $scope.$apply();
      }
    } …
Run Code Online (Sandbox Code Playgroud)

firebase angularjs-scope angularfire

5
推荐指数
1
解决办法
729
查看次数

标签 统计

angularfire ×1

angularjs-scope ×1

firebase ×1

go ×1

mgo ×1

mongodb ×1