From d0b49380903a709c2a75e7a2fa26d9b27a46ca2e Mon Sep 17 00:00:00 2001 From: zhaomei Date: Thu, 7 Jun 2018 20:24:55 +0800 Subject: [PATCH] fix --- session.go | 2 +- session_test.go | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/session.go b/session.go index 9c64588a0..7bdfef964 100644 --- a/session.go +++ b/session.go @@ -4895,7 +4895,7 @@ type findModifyCmd struct { Collection string `bson:"findAndModify"` Query, Update, Sort, Fields interface{} `bson:",omitempty"` Upsert, Remove, New bool `bson:",omitempty"` - WriteConcern interface{} `bson:",omitempty"` + WriteConcern interface{} `bson:"writeConcern"` } type valueResult struct { diff --git a/session_test.go b/session_test.go index dc85f5133..f3ac2da92 100644 --- a/session_test.go +++ b/session_test.go @@ -1376,7 +1376,7 @@ func (s *S) TestFindAndModifyWriteConcern(c *C) { defer session.Close() coll := session.DB("mydb").C("mycoll") - err = coll.Insert(M{"fid": 42}) + err = coll.Insert(M{"id": 42}) c.Assert(err, IsNil) // Tweak the safety parameters to something unachievable. @@ -1391,15 +1391,14 @@ func (s *S) TestFindAndModifyWriteConcern(c *C) { ReturnNew: false, } info, err := coll.Find(M{"id": M{"$exists": true}}).Apply(change, &ret) - c.Assert(err, ErrorMatches, "timeout|timed out waiting for slaves|Not enough data-bearing nodes|waiting for replication timed out") - if !s.versionAtLeast(2, 6) { - // 2.6 turned it into a query error. - c.Assert(err.(*mgo.LastError).WTimeout, Equals, true) - } c.Assert(info.Updated, Equals, 1) c.Assert(info.Matched, Equals, 1) - c.Assert(info.UpsertedId, NotNil) - c.Assert(ret.Id, Equals, 50) + c.Assert(ret.Id, Equals, uint64(42)) + + if s.versionAtLeast(3, 2) { + // findAndModify support writeConcern after version 3.2. + c.Assert(err, ErrorMatches, "timeout|timed out waiting for slaves|Not enough data-bearing nodes|waiting for replication timed out") + } } func (s *S) TestFindAndModifyBug997828(c *C) {