MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB oplog में प्रमुख नामों में डॉट्स वाले रिकॉर्ड हैं, जिनके लिए पूछताछ नहीं की जा सकती है

आप सही हैं, MongoDB के oplog कार्यान्वयन में कुछ असंगतता है जो प्रत्येक ऑप लॉग के लिए एक दस्तावेज़ प्रारूप की अनुमति देता है जो तकनीकी रूप से ऐसे दस्तावेज़ को तदनुसार क्वेरी करने की अनुमति नहीं देता है।

यहां तक ​​कि एक ही प्रविष्टि को सम्मिलित करना भी संभव नहीं है क्योंकि इसका एक $set फ़ील्ड नाम है:

db.tmp2.insert({ 
    "ts" : Timestamp(1450117240, 1), 
    "h" : NumberLong(2523649590228245285), 
    "v" : NumberInt(2), 
    "op" : "u", 
    "ns" : "test.tmp", 
    "o2" : {
        "_id" : ObjectId("566f069e63d6a355b2c446af")
    }, 
    "o" : {
        "$set" : {
            "b.d" : NumberInt(4)
        }
    }
})

2015-12-14T10:27:04.616-0800 E QUERY    Error: field names cannot start with $ [$set]
    at Error (<anonymous>)
    at DBCollection._validateForStorage (src/mongo/shell/collection.js:161:19)
    at DBCollection._validateForStorage (src/mongo/shell/collection.js:165:18)
    at insert (src/mongo/shell/bulk_api.js:646:20)
    at DBCollection.insert (src/mongo/shell/collection.js:243:18)
    at (shell):1:9 at src/mongo/shell/collection.js:161

और b.d एक कुंजी के लिए अमान्य है

db.tmp.update({ a: 1 }, { $set: { 'b.d': 4 } }, { upsert: true })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.oplog.rs.find()


db.tmp2.insert({ 
    "ts" : Timestamp(1450117240, 1), 
    "h" : NumberLong(2523649590228245285), 
    "v" : NumberInt(2), 
    "op" : "u", 
    "ns" : "test.tmp", 
    "o2" : {
        "_id" : ObjectId("566f069e63d6a355b2c446af")
    }, 
    "o" : {
        "set" : {
            "b.d" : NumberInt(4)
        }
    }
})

2015-12-14T10:23:26.491-0800 E QUERY    Error: can't have . in field names [b.d]
    at Error (<anonymous>)
    at DBCollection._validateForStorage (src/mongo/shell/collection.js:157:19)
    at DBCollection._validateForStorage (src/mongo/shell/collection.js:165:18)
    at DBCollection._validateForStorage (src/mongo/shell/collection.js:165:18)
    at insert (src/mongo/shell/bulk_api.js:646:20)
    at DBCollection.insert (src/mongo/shell/collection.js:243:18)
    at (shell):1:9 at src/mongo/shell/collection.js:157

शायद एक जिरा मुद्दा लॉग किया जाना चाहिए जो अनुशंसा करता है कि $set खोज के साथ एक सिंटैक्स को मान के रूप में सेट किया जाना चाहिए:

{ 
    "ts" : Timestamp(1450117240, 1), 
    "h" : NumberLong(2523649590228245285), 
    "v" : NumberInt(2), 
    "op" : "u", 
    "ns" : "test.tmp", 
    "o2" : {
        "_id" : ObjectId("566f069e63d6a355b2c446af")
    }, 
    "o" : {
        "$set" : {
            "key" : "b.d"
            "value" : NumberInt(4)
        }
    }
}

अपडेट:इसके लिए एक जीरा मुद्दा बनाया:

https://jira.mongodb.org/browse/SERVER-21889



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Django +1.10 को MongoDB के साथ जोड़ना

  2. क्या मुझे मैन्युअल रूप से एक नेवला कनेक्शन बंद करने की आवश्यकता है?

  3. NODE.JS:FATAL ERROR- JS आवंटन विफल - बड़ी एक्सेल फाइलों को पार्स करते समय मेमोरी से बाहर प्रक्रिया

  4. Mongo C# ड्राइवर:BsonValue को डिसेरिएलाइज़ करें

  5. स्प्रिंग डेटा मोंगोडब मोंगोडब कनेक्शन बंद नहीं कर रहा है