10

このエラーの意味がわかりません

LEFT_SUBFIELD は Object: stats not: 6 のみをサポートします

プロファイル コレクションに挿入しているときに発生しているようです。私はmongoose.jsを使用しています。統計プロパティの各カテゴリの投稿数を挿入しています。

stats: {category:count, category2: count2}.

これが私のスキーマです

var ProfileSchema = new Schema({
  uname: {
    type: String,
    required: true,
    index: true,
    unique: true
  },
  fname: String,
  lname: String,
  stats: {
    type:{},
    "default":{},
    required:true
  },
  created: {
    type:Date,
    required:true,
    "default":Date.now
  }
});

統計オブジェクト $inc カウントを更新しているときに発生する可能性があると思うので、統計はこの更新のようなものになる可能性があります

db.status.update({_id:xyz}, {$inc: { stats.foo : 1, stats.bar:1}})

これが私のマングースコードです

      var tags = ["comedy", "action", "drama"];

      //also adding the postId to the posts collection of profile
      var updateCommand = {$push: {posts: post._id}};

      var stats = {};
      for (var i = tags.length - 1; i >= 0; i--){
        stats["stats." + tags[i].toString()] = 1;
      };
      updateCommand.$inc = stats;

      Profile.update(
        {uname: uname}, 
        updateCommand,
        {safe:true, upsert:true},
        callback
      );
4

3 に答える 3

24

非オブジェクトのサブドキュメントを更新しようとしている場合にも発生します。

> db.test.insert({_id: 10240292, object: 'some string'})
> db.test.update({_id: 10240292}, {$set: {'object.subkey': 'some string'}})
LEFT_SUBFIELD only supports Object: object not: 2

あなたのケースではないかもしれませんが、このエラーをグーグルで調べている人を助けることができます.

于 2012-10-14T12:58:03.650 に答える
1

あなたはこれに遭遇するかもしれません:

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

また

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

どちらも 2.1 dev ブランチで既に修正されていますが、(まだ) 2.0 にバックポートされていません。

同様の問題について、まともな議論がここにあります:

https://groups.google.com/forum/?fromgroups#!topic/mongodb-user/VhjhcyEdbNQ

基本的には、回避する必要がある更新の一部として空のキーを渡す可能性が高いという事実に要約されます。

于 2012-04-20T10:59:27.600 に答える
0
db.collection('fs.files').update({_id: Object_id}, {$set: {'metadata': {"foo" : "bar"}}}
于 2015-06-05T00:25:52.660 に答える